วันจันทร์ที่ 30 กรกฎาคม พ.ศ. 2561

โปรเจค Arduino เปิดปิดไฟบ้านผ่านมือถือ เชื่อมต่อ Bluetooth

โปรเจค Arduino เปิดปิดไฟบ้านผ่านมือถือ เชื่อมต่อ Bluetooth





Code Arduino
#include 

SoftwareSerial mySerial(10, 11); //Pin10 RX , Pin 11 TX connected to--> Bluetooth TX,RX

#define relay1 2
#define relay2 3
#define relay3 4
#define relay4 5

char val;
void setup() {
  mySerial.begin(9600);
  Serial.begin(9600);
  
  pinMode(relay1,OUTPUT);
  pinMode(relay2,OUTPUT);
  pinMode(relay3,OUTPUT);
  pinMode(relay4,OUTPUT);
  digitalWrite(relay1,LOW);//H
  digitalWrite(relay2,LOW);//H
  digitalWrite(relay3,LOW);//H
  digitalWrite(relay4,LOW);//H
  Serial.println("HC-05");
  delay(500);
}

void loop() {
//chek data serial from bluetooth android App
  if( mySerial.available() >0 ) {
    val = mySerial.read();
    Serial.println(val);
  }
//Relay is on
  if( val == '1' ) {
    digitalWrite(relay1,HIGH); }//L
  else if( val == '2' ) {
    digitalWrite(relay2,HIGH); }//L
  else if( val == '3' ) {
    digitalWrite(relay3,HIGH); }//L
  else if( val == '4' ) {
    digitalWrite(relay4,HIGH); }//L
//relay all on
  else if( val == '9' ) {
    digitalWrite(relay1,HIGH);//L
    digitalWrite(relay2,HIGH);//L
    digitalWrite(relay3,HIGH);//L
    digitalWrite(relay4,HIGH);//L
  }
//relay is off
  else if( val == 'A' ) {
    digitalWrite(relay1,LOW); }//H
  else if( val == 'B' ) {
    digitalWrite(relay2,LOW); }//H
  else if( val == 'C' ) {
    digitalWrite(relay3,LOW); }//H
  else if( val == 'D' ) {
    digitalWrite(relay4,LOW); }//H
//relay all off
  else if( val == 'I' ) {
    digitalWrite(relay1,LOW);//H
    digitalWrite(relay2,LOW);//H
    digitalWrite(relay3,LOW);//H
    digitalWrite(relay4,LOW);//H
  }
}

ขั้นตอนการใช้งาน
1. ดาวน์โหลดแอฟ Arduino 4 Relay ผ่าน Google Playstore

2. ต่อวงจร และ Upload Code ไปที่บอร์ด Arduino
3. เปิด Bluetooth ที่มือถือ เพื่อค้นหา Device จะพบ HC-05 
4. เชื่อมต่อกับ HC-05 ใส่ Password: 1234
5. ใช้มือถือเปิดแอฟ Arduino 4 Relays กดที่สัญลักษณ์ Bluetooth



6. เลือก Device HC-05 จากนั้นทดสอบเปิดปิด Relay ได้เลย




โปรเจคการใช้งาน Arduino + Relay Module

ควบคุมการปิดเปิดเครื่องใช้ไฟฟ้า
 01   0203
         รีเลย์ (Relay) เป็นอุปกรณ์ไฟฟ้าชนิดหนึ่ง ซึ่งทำหน้าที่ตัดต่อวงจรแบบเดียวกับสวิตช์ โดยควบคุมการทำงานด้วยไฟฟ้า Relay มีหลายประเภท ตั้งแต่ Relay ขนาดเล็กที่ใช้ในงานอิเล็กทรอนิกส์ทั่วไป จนถึง Relay ขนาดใหญ่ที่ใช้ในงานไฟฟ้าแรงสูง โดยมีรูปร่างหน้าตาแตกต่างกันออกไป แต่มีหลักการทำงานที่คล้ายคลึงกัน สำหรับการนำ Relay ไปใช้งาน จะใช้ในการตัดต่อวงจร ทั้งนี้ Relay ยังสามารถเลือกใช้งานได้หลากหลายรูปแบบ
04

ภายใน Relay จะประกอบไปด้วยขดลวดและหน้าสัมผัส 
         หน้าสัมผัส NC (Normally Close) เป็นหน้าสัมผัสปกติปิด โดยในสภาวะปกติหน้าสัมผัสนี้จะต่อเข้ากับขา COM (Common) และจะลอยหรือไม่สัมผัสกันเมื่อมีกระแสไฟฟ้าไหลผ่านขดลวด
         หน้าสัมผัส NO (Normally Open) เป็นหน้าสัมผัสปกติเปิด โดยในสภาวะปกติจะลอยอยู่ ไม่ถูกต่อกับขา COM (Common) แต่จะเชื่อมต่อกันเมื่อมีกระแสไฟไหลผ่านขดลวด
         ขา COM (Common) เป็นขาที่ถูกใช้งานร่วมกันระหว่าง NC และ NO ขึ้นอยู่กับว่า ขณะนั้นมีกระแสไฟฟ้าไหลผ่านขดลวดหรือไม่ หน้าสัมผัสใน Relay 1 ตัวอาจมีมากกว่า 1 ชุด ขึ้นอยู่กับผู้ผลิตและลักษณะของงานที่ถูกนำไปใช้ จำนวนหน้าสัมผัสถูกแบ่งออกดังนี้
         สวิตช์จะถูกแยกประเภทตามจำนวน Pole และจำนวน Throw ซึ่งจำนวน Pole (SP-Single Pole, DP-Double Pole, 3P-Triple Pole, etc.) จะบอกถึงจำนวนวงจรที่ทำการเปิด-ปิด หรือ จำนวนของขา COM นั่นเอง และจำนวน Throw (ST, DT) จะบอกถึงจำนวนของตัวเลือกของ Pole ตัวอย่างเช่น SPST- Single Pole Single Throw สวิตช์จะสามารถเลือกได้เพียงอย่างเดียวโดยจะเป็นปกติเปิด (NO-Normally Open) หรือปกติปิด (NC-Normally Close) แต่ถ้าเป็น SPDT- Single Pole Double Throw สวิตช์จะมีหนึ่งคู่เป็นปกติเปิด (NO) และอีกหนึ่งคู่เป็นปกติปิดเสมอ (NC) ดังรูปด้านล่าง
05                      06
SPST คือ Single Pole Single Throw                      DPST คือ Double Pole Single Throw
SPDT คือ Single Pole Double Throw                      DPDT คือ Double Pole Double Throw
07
          จากส่วนประกอบข้างต้นที่ได้กล่าวไป ในบทความนี้เราจะใช้งาน Relay แบบ SPDT (Single Pole Double Throw) หลักการทำงานของ Relay นั้น ในส่วนของขดลวด เมื่อมีกระแสไฟฟ้าไหลผ่าน จะทำให้ขดลวดเกิดการเหนี่ยวนำและทำหน้าที่เสมือนแม่เหล็กไฟฟ้า ส่งผลให้ขา COM ที่เชื่อมต่ออยู่กับหน้าสัมผัส NC (ในสภาวะที่ยังไม่เกิดการเหนี่ยวนำ) ย้ายกลับเชื่อมต่อกับหน้าสัมผัส NO แทน และปล่อยให้ขา NC ลอย เมื่อมองที่ขา NC กับ COM และ NO กับ COM แล้วจะเห็นว่ามีการทำงานติด-ดับลักษณะคล้ายการทำงานของสวิชต์ เราสามารถอาศัยคุณสมบัตินี้ไปประยุกต์ใช้งานได้ 
          ในบทความนี้ เราจะกล่าวถึงวิธีการนำ Relay Module ไปประยุกต์ใช้งานจริง แต่ก่อนอื่นเรามาดูวิธีอ่านคุณสมบัติของ Relay ว่าสามารถรองรับการทำงานที่แรงดันและกระแสไฟฟ้าเท่าไร ใช้แรงดันไฟฟ้าในการทำงานอย่างไรก่อนนะครับ 
08
1. ยี่ห้อ รุ่นของผู้ผลิต (แบรนด์) รวมถึงสัญลักษณ์มาตรฐานต่างๆ
2. รายละเอียดของไฟฟ้ากระแสสลับที่รองรับการทำงานได้ (VAC)
3. รายละเอียดของไฟฟ้ากระแสตรงที่รองรับการทำงานได้ (VDC)
4. โมเดล ระดับแรงดันฝั่งขดลวด ชนิดและโครงสร้าง และข้อมูลด้าน Coil Sensitivity
คุณสมบัติแบบละเอียด ดูได้จากตารางด้านล่างนี้

09
          จากตาราง สามารถสรุปได้ว่าเป็น Relay ยี่ห้อ Songle โมเดล SRD รองรับการทำงานแรงดันกระแสสลับที่ 250V@10A หรือ 125V@10A รองรับแรงดันกระแสตรงที่ 28VDC@10A ฝั่งขดลวดทำงานด้วยแรงดัน 5V โครงสร้างตัว Relay เป็นแบบซีลด์ มีค่าความไวขดลวดที่ 0.36W หน้าสัมผัสเป็นรูปแบบ 1 from C
          หน้าสัมผัสแบบ A (Form A) หมายถึง หน้าสัมผัสของ Relay ในสภาพปกติจะเปิดอยู่ (Normally open) และหน้าสัมผัสเป็นแบบ SPST ถ้าจะเขียนเป็นสัญลักษณ์ได้คือ
10
          หน้าสัมผัสแบบ B (Form B) หมายถึง หน้าสัมผัสของ Relay ในสภาพปกติจะปิด (Normally close) และเป็นแบบ SPST เขียนเป็นสัญลักษณ์ได้คือ
11
          หน้าสัมผัสแบบ C (Form C) แบบนี้เรียกว่า "break, make หรือ transfer" เป็นหน้าสัมผัสแบบ SPDT เขียนสัญลักษณ์ได้ดังนี้ 
12
          หน้าสัมผัสแบบ C จะมีอยู่ด้วยกัน 3 ขา ในขณะที่ Relay ยังไม่ทำงาน หน้าสัมผัส 1 และ 2 จะต่อกันอยู่ เมื่อ Relay ทำงานหน้าสัมผัส 1 และ 2 จะแยกกัน จากนั้นหน้าสัมผัส 1 จะมาต่อกับหน้าสัมผัส 3 แทน พอ Relay หยุดทำงานหน้าสัมผัส 1 กับ 2 ก็จะกลับมาต่อกันตามเดิม
          หลังจากที่เราทราบคุณสมบัติของ Relay กันไปแล้ว ในบทความนี้เราจะยกตัวอย่างการประยุกต์ใช้งานโดยใช้ Relay โดยจะใช้ Relay Module 4 Channels แบบ OPTO-ISOLATED ดังภาพ
13
           Relay Module 4 Channels มีเอาต์พุตคอนเน็คเตอร์ที่ Relay เป็น NO/COM/NC สามารถใช้กับโหลดได้ทั้งแรงดันไฟฟ้า DC และ AC โดยใช้สัญญาณในการควบคุมการทํางานด้วยสัญญาณโลจิก TTL
คุณสมบัติ (Features) 
• รีเลย์เอาต์พุตแบบ SPDT จํานวน 4 ช่อง 
• สั่งงานด้วยระดับแรงดัน TTL 
• CONTACT OUTPUT ของรีเลย์รับแรงดันได้สูงสุด 250 VAC 10 A, 30 VDC 10 A 
• มี LED แสดงสถานะ การทํางานของรีเลย์และแสดงสถานะของบอร์ด 
• มีจัมพ์เปอร์สําหรับเลือกว่าจะใช้กราวด์ร่วมหรือแยก 
• มี OPTO-ISOLATED เพื่อแยกกราวด์ส่วนของสัญญาณควบคุมกับไฟฟ้าที่ขับรีเลย์ออกจากกัน
ขาสัญญาณ (Pin Definition)
14 15
ภาพและตารางแสดงขาที่ใช้ในการเชื่อมต่อของ Relay Module 4 Channels
          ในบทความนี้ เราจะยกตัวอย่างการนำ Relay Module 4 Channels ไปใช้งาน โดยมีไมโครคอนโทรลเลอร์ Arduino UNO R3 ในการควบคุมการสั่งงาน จะยกตัวอย่างการประยุกต์ใช้งาน 2 ตัวอย่างคือ ตัวอย่างที่1 ควบคุมมอเตอร์ DC ให้หมุนได้ทั้งซ้าย-ขวา โดยไม่ต้องการคุมความเร็วรอบ และตัวอย่างที่2 ควบคุมการปิด-เปิดเครื่องใช้ไฟฟ้ากระแสสลับ 220 VAC 
ตัวอย่างที่1 ควบคุมมอเตอร์ให้หมุนได้ทั้งซ้าย-ขวา โดยไม่ต้องการคุมความเร็วรอบ
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 = หยุดหมุน
21

ตัวอย่างที่2 ควบคุมการปิด-เปิดเครื่องใช้ไฟฟ้ากระแสสลับ 220 VAC  
22
วิธีการเชื่อมต่อ
สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสสลับ (AC)
• ต่อไฟเส้นที่ 1 จากแหล่งจ่ายไฟไปยังอุปกรณ์ที่ขั้วลบ (ถ้ามีแจ้งไว้ ถ้าไม่มีก็ใช้ขั้วใดก็ได้)
• ต่อไฟเส้นที่ 2 จากแหล่งจ่ายไฟเข้าขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไปยังอุปกรณ์ไฟฟ้าขั้วที่เหลือ
สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสตรง (DC)
• ต่อไฟลบหรือ GND ไปยังอุปกณ์ไฟฟ้าเข้าที่ขั้วลบหรือ GND
• ต่อไฟบวกหรือ VCC ไปยังขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไฟยังอุปกรณ์ไฟฟ้าที่ขั้วบวก
23
         ในการทดสอบนี้ เราจะใช้บอร์ดคอนโทรลเลอร์ 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
244. ทำการส่งข้อมูลให้ Arduino โดยพิมพ์ข้อความลงในช่องด้านล่างของโปรแกรม
a. ข้อมูลที่กำหนดไว้คือ 1 = เปิดไฟ, 3 = ปิดไฟ
25

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

http://electronics.se-ed.com/contents/035s095/035s095_p02.asp
http://www.baantech.com/product.php?catid=16

วันอาทิตย์ที่ 29 กรกฎาคม พ.ศ. 2561

โครงงานเครื่องกระปุกออมสินนับเงินอัตโนมัติ

ที่มาและความเป็นมาของโครงงาน

เนื่องจากในปัจจุบันนี้ชุมชนของเรามีการรณรงค์ให้รู้จักอดออม หยอดเหรียญในกระปุกออมสินเกือบทุกครัวเรือนซึ่งในการหยอดเหรียญออมในกระปุกนั้นมีปัญหาหลายอย่างเช่น บางครั้งก็อยากรู้ยอดเงินในกระปุกออมสินที่หยอด บางครั้งก็นับแล้วลืมและในกระปุกออมสินบางชนิดใช้ได้เพียงครั้งเดียว
ดังนั้นจากปัญหาข้างต้นที่กล่าวมาจึงได้คิดหาวิธีแก้ปัญหานี้โดยการสร้าง กระปุกออมสินนับเงินอัตโนมัติ ขึ้นมาโดยกระปุกออมสินนี้สามารถ นับจำนวนเงินและบอกจำนวนเหรียญแต่ละชนิดที่หยอดลงไปในกระปุกได้ในขณะเดียวกันด้วย และเมื่อกระปุกออมสินเต็มยังสามารถนำเหรียญออกมา แล้ว reset ค่าเพื่อเริ่มใช้งานกระปุกออมสินใหม่อีกครั้ง
ในการสร้างโครงงานนี้ จะสามารถแก้ไขปัญหาต่างๆได้ไม่ว่าจะเป็น ปัญหาของการลืมยอดเงินในกระปุกอออมสิน ปัญหาของการใช้กระปุกออมสินได้ครั้งเดียว หรือไม่ว่าจะเป็นปัญหาของการอยากทราบยอดเงินในกระปุกออมสิน โครงงานนี้ก็สามารถแก้ปัญหานี้ได้

คุณสมบัติการทำงานของโครงงาน

  1. สามารถนับยอดเงินที่หยอดในกระปุกออมสินได้
  2.  สามารถนับจำนวนเหรียญที่หยอดได้
  3. ใช้ได้กับเหรียญ 1 บาท เหรียญ 5 บาท และเหรียญ 10 บาท
  4. แสดงยอดเงินรวมและจำนวนเหรียญแต่ละชนิดผ่านจอ LCD

การต่อวงจรสำหรับนับเงินในกระปุกออมสินอัตโนมัติ

รูปที่ 2 วงจรที่สมบูรณ์
รูปที่ 2 วงจรที่สมบูรณ์

การต่อวงจรที่สมบูรณ์ของโครงงาน

เป็นการนำเซนเซอร์ก้ามปูมาใช้ในการนับเหรียญ และนับจำนวนเงิน โดยจะใช้เซนเซอร์ก้ามปูทั้งหมด 3 ตัวใช้ไฟเลี้ยง 5 V จำนวนเงินและจำนวนเหรียญที่นับได้จะแสดงผลบนจอ LCD โดยเซนเซอร์ตัวที่ 1 นำ Output ต่อเข้าที่ขา PA0 ทำหน้าที่ตรวจว่าเป็นเหรียญ 1 บาท หรือไม่ ถ้าเป็นก็นับจำนวนเงินเพิ่ม 1 บาท และนับจำนวนเหรียญ 1 บาท เพิ่มขึ้น 1 เหรียญ ส่วนเซนเซอร์ตัวที่ 2 นำ Output ต่อเข้าที่ขา PA1 ทำหน้าที่ตรวจว่าเป็นเหรียญ 5 บาท หรือไม่ ถ้าเป็นก็นับจำนวนเงินเพิ่ม 5 บาท และนับจำนวนเหรียญ 5 บาท เพิ่มขึ้น 1 เหรียญ ส่วนเซนเซอร์ตัวที่ 3 นำ Output ต่อเข้าที่ขา PA2 ทำหน้าที่ตรวจว่าเป็นเหรียญ 10 บาท หรือไม่ ถ้าเป็นก็นับจำนวนเงินเพิ่ม 10 บาท และนับจำนวนเหรียญ 10 บาท เพิ่มขึ้น 1 เหรียญ ส่วนสวิทซ์ Reset ต่อเข้าที่ขา PA3 ทำหน้าที่ Reset ค่าเมื่อเรานำเหรียญออกจากกระปุก แล้วเราก็จะกดสวิทซ์เพื่อทำการ Reset ค่าให้เริ่มนับใหม่เพื่อใช้ในครั้งต่อไปได้และส่วนประกอบของวงจรประกอบไปด้วย
  1. เซนเซอร์ก้ามปู 3 ตัว
  2. บอร์ด STM32F4Discovery
  3. จอ LCD แสดงผล
  4. Adapter DC 3.3 v และ 5 v
  5. สวิทซ์ reset

การออกแบบโครงงาน

1. การติดเซนเซอร์และทางเดินของเหรียญ สำหรับการติดเซนเซอร์และทางเดินของเหรียญนั้น ทางเดินของเหรียญนั้นจะต้องเอี้ยงพอที่เซนเซอร์จะสามารถค่าอ่านทัน จากการทดลองปรากฏว่าเซนเซอร์อ่านค่าทันที่มุมเอียง 35 องศา
2. การนับเหรียญ เซนเซอร์ตัวที่ 1 นั้นทุกเหรียญจะต้องผ่านทั้งหมด เซนเซอร์ตัวที่ 2 จะมีแค่เหรียญ 5 บาท กับเหรียญ 10 บาทผ่านเหรียญ 1 บาทจะไม่ผ่านและเซนเซอร์ตัวที่ 3 จะมีแค่เหรียญ 10 บาทเท่านั้นที่ผ่านเหรียญ 5 บาทและเหรียญ 1 บาทจะไม่ผ่าน การนับค่านั้นจะถูกกำหนดไว้ว่า ถ้าผ่านเซนเซอร์ตัวที่ 1 โปรแกรมจะสั่งให้นับเพิ่ม 1 บาท ถ้าผ่านเซนเซอร์ตัวที่ 2 โปรแกรมจะสั่งให้นับเพิ่ม 4 บาท และถ้าผ่านเซนเซอร์ตัวที่ 3 โปรแกรมจะสั่งให้นับเพิ่ม 5 บาท

ตัวอย่างการนับเหรียญ

– นับเหรียญ 1 บาทความสูงของเหรียญ 1 บาทจะผ่านแค่เซนเซอร์ตัวที่ 1 แต่จะไม่ผ่านเซนเซอร์ตัวที่ 2 และตัวที่ 3 ดั้งนั้นจากข้างต้นผลรวมของเงินจะถูกนับเพิ่ม 1 บาท
– นับเหรียญ 5 บาทความสูงของเหรียญ 5 บาทจะผ่านเซนเซอร์ตัวที่ 1และ เซนเซอร์ตัวที่ 2 แต่ไม่ผ่านเซนเซอร์ตัวที่ 3 ดั้งนั้นจากข้างต้นผลรวมของเงินจะถูกนับเพิ่ม 1 บาท + 4 บาท เท่ากับ 5 บาท
– นับเหรียญ 10 บาทความสูงของเหรียญ 10 บาทจะผ่านเซนเซอร์ตัวที่ 1 เซนเซอร์ตัวที่ 2 และเซนเซอร์ตัวที่ 3 ดั้งนั้นจากข้างต้นผลรวมของเงินจะถูกนับเพิ่ม 1 บาท + 4 บาท + 5 บาท เท่ากับ 10 บาท

หลักการทำงานของโครงงาน กระปุกออมสินนับเงินอัตโนมัติ

เมื่อจ่ายไฟให้วงจรเริ่มทำงานเมื่อหยอดเหรียญ 1 บาท 5 บาท หรือ 10 บาทแล้วนั้น เหรียญแต่ละชนิดจะวิ่งผ่านเซนเซอร์ต่างกันตามที่กล่าวมาข้างต้นจากนั้น โปรแกรมจะทำการรวมยอดเงินที่บวกเพิ่ม แสดงผ่านจอ LCD ว่าขณะนั้นได้มีเงินในกระปุกออมสินเท่าไร เหรียญแต่ละชนิดกี่เหรียญ และเมื่อกระปุมออมสินเต็มก็สามารถนำเงินออกมาแล้วกดปุ่ม reset ค่าเพื่อเริ่มใช้งานกระปุกออมสินใหม่อีกครั้ง

การนำ กระปุกออมสินนับเงินอัตโนมัติ ไปใช้งาน

1. เสียบปลั๊ก Adapter dc 3.3 v และ 5 v
 2. หยอดเหรียญตรงช่องหยอดเหรียญ
 3. ผลรวมยอดเงินและจำนวนของเหรียญชนิดต่างๆแสดงออกทางจอ LCD
 4. เมื่อเหรียญเต็มให้ดึงที่จับด้านส่งออกเพื่อนำเงินที่หยอดไว้ออกไปใช้ได้
5. กดปุ่ม reset ค่าเพื่อเริ่มใช้งานกระปุกออมสินใหม่อีกครั้ง

 โปรแกรม Simulink ที่สมบูรณ์ของโครงงาน

รูปที่ 3 โปรแกรม Simulink ของโครงงานกระปุกออมสินนับเงินอัตโนมัติ
รูปที่ 3 โปรแกรม Simulink ของโครงงานกระปุกออมสินนับเงินอัตโนมัติ

โปรแกรม Simulink ที่ใช้ทั้งหมดในโครงงาน

1. Target Setup  เพื่อเป็นการกำหนดว่าเราใช้บอร์ด Waijung blockset 13.07a บอร์ดไมโครคอนโทรลเลอร์ STM32F4
2. Character LCD Setup – เป็นการตั้งค่าเลือกใช้จอ LCD เพื่อใช้ในการแสดงผล
 3. Volatile Data Storage – เป็นการประกาศค่าตัวแปรเพื่อเก็บค่าลงในไมโครคอนโทรลเลอร์ เป็นตัวแปรชนิด(int32)
12_moneycollector_06-3
4. Volatile Data Storage – เป็นการประกาศค่าตัวแปรเพื่อเก็บค่าลงในไมโครคอนโทรลเลอร์ เป็นตัวแปรชนิด(string) เพื่อนำไปแสดงผลที่จอ LCD
5. Volatile Data Storage Write – เป็นการเขียนค่าตัวแปรเพื่อนำค่าที่ออกมาจาก MATLAB Functions ไปเก็บไว้ที่ Block Volatile Data Storage ตามตัวแปรที่เราได้ประกาศไว้
6. Volatile Data Storage Read – ทำหน้าที่อ่านค่าที่เราเขียนไว้ใน Block Volatile Data Storage Write
7. Printf – เป็น Block ที่นำค่าที่ได้จาก Block Volatile Data Storage Read ไปแสดงผลบนหน้าจอ LCD
8. Character LCD Write – เป็นการตั้งค่าการแสดงผลของจอ LCD ตรง Port cmd จะเป็นการตั้งให้เคลียร์ค่าก่อนแสดงผลหรือป่าวถ้าเป็น 1 ให้เคลียร์ ถ้าเป็น 0 ไม่เคลียร์ ตรง Port xpos คือ ให้เริ่มต้นแสดงผลในตำแหน่งไหนในแนวแกน x ตรง Port ypos คือให้เริ่มต้นแสดงผลในตำแหน่งไหนในแนวแกน y ส่วน Port str คือค่าที่เราจะแสดงผลบนจอ LCD
9. Digital Input – ทำหน้าที่เพื่อรับค่าจากเซนเซอร์และสวิทซ์แล้วนำไปเข้าที่ Block MATLAB Functions เพื่อนำค่าที่ได้ไปประมวลผลว่าเป็นเหรียญชนิดใด
10. MATLAB Functions
12_moneycollector_06-10
 MATLAB Functions ใช้สำหรับเขียนโค๊ดโปรแกรมนับยอดเงินรวมในกระปุกออมสินและนับจำนวนเหรียญ 1 บาท เหรียญ 5 บาท และเหรียญ 10 บาท ส่วนโค๊ดใน MATLAB Functions จะเป็นแบบ m-file โค๊ด ส่วน m-fileโค๊ดในแต่ละ Block ใน MATLAB Functions นั้นเราจะแยกอธิบายในแต่ละ Block หลังจากนี้ คือ
m-file โค๊ด ใน MATLAB Functions Block ที่ 1 (นับยอดเงินรวม)
m-file โค๊ด ใน MATLAB Functions Block ที่ 2 (นับจำนวนเหรียญ 1 บาท)
m-file โค๊ด ใน MATLAB Functions Block ที่ 3 (นับจำนวนเหรียญ 5 บาท)
m-file โค๊ด ใน MATLAB Functions Block ที่ 4 (นับจำนวนเหรียญ 10 บาท)

สรุปผลการทำงานของโครงงาน กระปุกออมสินนับเงินอัตโนมัติ

กระปุกออมสินนับเงินอัตโนมัตินี้ สามมารถนับเงินเหรียญ 1 บาท, 5 บาท, 10 บาทที่หยอดในกระปุกออมสินได้ โดยจะแสดงยอดเงินรวม อีกทั้งยังบอกจำนวนเหรียญแต่ละชนิดผ่านจอ LCD และเมื่อเหรียญเต็มก็สามารถนำเหรียญออกแล้ว reset ค่าเพื่อเริ่มใช้งานกระปุกออมสินใหม่ได้อีกครั้ง แต่กระปุกออมสินนี้ไม่สามารถนับเหรียญ 2 บาทได้

งาน5 ในสถานที่ฝึกงานของ นักศึกษา ใช้ระบบควบคุมคุณภาพอย่างไร

Quality Assurance (QA) กับ Quality Control (QC) QC (Quality Control) หมายถึง  การควบคุมคุณภาพสินค้าให้เป็นไปตามคุณสมบัติที่กำหนดไว้  และส...