วันพุธที่ 14 พฤษภาคม พ.ศ. 2557

การทำงานของ PLC ทำงานโดยการสแกน (SCAN) โปรแกรมอย่างต่อเนื่อง การ SCAN 1 รอบจะประกอบด้วยขั้นตอนที่สำคัญ 3 ขั้นตอน (อาจจะมีมากว่า 3 ข้ันตอนก็ได้) ดังภาพ
ขั้นตอนที่ 1 ตรวจสอบสถานะของอินพุท
         ขั้นแรก PLC จะตรวจสอบอินพุตแต่ละอินพุตว่ามีสถานะ ON หรือ OFF โดยจะทำการตรวจสอบดูว่า Sensor ที่ต่ออยู่กับอินพุตตัวแรกว่ามีสถานะเป็นอย่างไรแล้วจึงตรวสอบที่อินพุตตัวที่ 2 และ 3 ไปเรื่อยๆ จากนั้นจะทำการบันทึกข้อมูลที่ได้ลงในหน่วยความจำเพื่อจะใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 2 การประมวลผลของโปรแกรม
        ขั้นตอนนี้ PLC จะทำการประมวลผลตามโปรแกรมที่ได้เขียนขึ้นโดยจะทำเพียงคำสั่งละครั้ง ตัวอย่างเช่น ตัวโปรแกรมอาจจะบอกว่า "ถ้าอินพุตแรกมีสถานะเป็น ON จากนั้นจะ ทำให้เอาต์พุตแรกมีสถานะ ON" เนื่องจากเรารู้มาแล้วว่าอินพุตมีสถานะ ON หรือ OFF จากขั้นตอนที่แล้ว ดังนั้นจึงทำให้ PLC สามารถตัดสินใจได้ว่าเอาต์พุตแรกควรจะมีสถานะ เป็นอย่างไร จากนั้นก็จะเก็บผลที่ได้จากการประมวลผลไว้ในหน่วยความจำเพื่อใช้ในขั้นตอนต่อไป
ขั้นตอนที่ 3 ปรับปรุงสถานะของเอาต์พุต
        ขั้นตอนสุดท้ายคือ PLC จะทำการปรับปรุงสถานะของเอาต์พุด โดยในการปรับปรุงค่าสถานะของเอาต์พุตนี้จะขึ้นอยู่สถานะ ของอินพุตที่ได้มาจากขั้นตอนแรกและผลจากการประมวลผลตามโปรแกรมในช่วงขั้นตอนที่สอง
        หลังจากเสร็จขั้นตอนที่สามแล้ว PLC จะกลับไปที่ขั้นตอนที่ 1 และทำซ้ำไปเรื่อยๆอย่างต่อเนื่อง ซึ่งนอกจากเหนือจากขั้นตอนทั้งสามนี้แล้ว PLC อาจจะใช้เวลาในการติดต่อสื่อสารกับอุปกรณ์อื่นๆ หรือตรวจสอบสถานการณ์ทำงานต่างๆ ซึ่งไม่มีนัยยะสำคัญมากนัก
ดังนั้น 1 scan time จะหมายถึงเวลาที่ใช้ไปในการทำงานตามขั้นตอนหลักทั้ง 3 ที่ได้กล่าวมา

วันอังคารที่ 13 พฤษภาคม พ.ศ. 2557

หลักการทำงาน


Wiring Digaram

Arduino Code
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 0;    // variable to store the servo position
int motor = 0;

void setup()
{  
  Serial.begin(9600);  // initialize serial: 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 
  Serial.print("Arduino control Servo Motor Connected OK");
  Serial.print('\n');
}

void loop()
  // if there's any serial available, read it:
  while (Serial.available() > 0) {
    
    // look for the next valid integer in the incoming serial stream:
    motor = Serial.parseInt();
   
    // do it again:
    pos = Serial.parseInt();
  
    // look for the newline. That's the end of your  sentence:
    if (Serial.read() == '\n') {
              
       myservo.write(pos);              // tell servo to go to position in variable 'pos'
       delay(15);                       // waits 15ms for the servo to reach the position
     
      // print the three numbers in one string as hexadecimal:
      Serial.print("Data Response : ");
      Serial.print(motor, DEC);
      Serial.print(pos, DEC);
      
    }
  }
}
 
  //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>=1; 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
  //}
 
 
  //val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  //val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  //myservo.write(val);                  // sets the servo position according to the scaled value
  //delay(15);


App Andorid

ขอบคุณ  http://microcontrollerkits.blogspot.com/2014/01/arduino-usb-control-servo-motor.html

วันศุกร์ที่ 18 เมษายน พ.ศ. 2557


รับเขียนโปรแกรม arduino ทุกรุ่น ปรึกษาได้
080-422-4466
automation999.engineer@gmail.com


http://www.elec2you.com/
Elec2you จำหน่ายอุปกรณ์อิเล็กทรอนิกส์ เซ็นเซอร์ ไมโครคอนโทรลเลอร์ พีแอลซี เป็นต้น ราคาถูกที่สุด

วันพุธที่ 16 เมษายน พ.ศ. 2557

Project oscilloscope arduino 

plot แรงดัน 0-5 v (analog0) กับแกน x(time สามารถปรับเวลาได้) พร้อมบันทึกข้อมูลลง SD Card



วันอาทิตย์ที่ 30 มีนาคม พ.ศ. 2557

Project เครื่องทดสอบกระแสไฟฟ้า Solar Cell



Arduino UNO


R6Ohm 50W
Current Sensor


ทดลองวัดกระแสจริง



ชิ้นงาน

วันอังคารที่ 18 มีนาคม พ.ศ. 2557

เริ่มกันเลยนะครับ
แนะนำกันก่อนเข้าไปให้ Folder ที่ติดตั้ง arduino
จะมี Folder ชื่อ library ที่เก็บข้อมูล library

เมื่อเข้าไป folder libraries จะแสดง libraries ทั้งหมดที่มี
มารู้จักวิธีการ add libraries กัน
1.ไปดาวโหลด libraries ตามเว็ปไซค์ที่เขาให้มาอิอิอิ
 



เป็นไฟล์ zip นะครับ


จากนั้นให้แตกไฟล์แล้วก๊อปไฟล์ไปไว้ใน folder library
 โดยมีเงื่อนไขคือ libraries แล้วตามด้วยชื่อ folder library ข้างใน folder ต้องมีไฟล์ตามรูปด้านบน

ปิดแล้วเปิดใหม่จะได้ดังรูปคับ RTClib เป็นชื่อ folder library ส่วน datecalc ,ds1307 และ softrtc เป็นตัวอย่างโปรแกรมให้ใช้งาน

ติดต่องานเขียนโปรแกรม arduino 080-422-4466

วันอังคารที่ 4 มีนาคม พ.ศ. 2557

รังสีอินฟราเรด (Infrared (IR)) มีชื่อเรียกอีกชื่อว่า รังสีใต้แดง หรือรังสีความร้อน เป็นคลื่นแม่เหล็กไฟฟ้าที่มีความยาวคลื่นอยู่ระหว่างคลื่นวิทยุและแสงมีความถี่ในช่วง 1011 – 1014 เฮิร์ตซ์ มีความถี่ในช่วงเดียวกับไมโครเวฟ มีความยาวคลื่นอยู่ระหว่างแสงสีแดงกับคลื่นวิทยุ คุณสมบัติเฉพาะตัวของรังสีอินฟราเรด เช่น ไม่เบี่ยงเบนในสนามแม่เหล็กไฟฟ้า ที่แตกต่างกันก็คือ คุณสมบัติที่ขึ้นอยู่กับความถี่ คือยิ่งความถี่สูงมากขึ้น พลังงานก็สูงขึ้นด้วย



รูปตัวส่ง


รูปตัวรับ 


นำมาประยุกต์ใช้งานได้ดังรูป


ด้านซ้ายมือวงจรตัวส่ง-ด้านขวามือวงจรตัวรับ สัญญาณแสง
เมื่อมีการรับสัญญาณกันระหว่างตัวรับและตัวส่ง infrared light จะวัดสัญญาณ adc ได้ 5v แต่เมื่อตัวรับและตัวส่ง ส่ง infrared light ไม่ถึงกัน acd จะได้ 0v 

เพื่อให้วงจรดีขึ้นนำ โดยเราใช้ LM311 ซึ่งเป็น Comparator มาใช้ในการเปรียบเทียบแรงดัน เพื่อให้ output ที่ได้นั้นออกมาเป็นลอจิก '0' หรือ '1' ดังรูปด้านล่าง


รูป วงจร Infrared with Comparator





วันอาทิตย์ที่ 2 มีนาคม พ.ศ. 2557

ผลิตจากโรงงานระดับ World Class ในประเทศจีน คุณภาพการผลิตดีกว่าของอิตาลี แต่ราคาประหยัดกว่า
สั่งซื้อเลยครับ
www.elec2you.com 350 บาท เว็ปเจ้าของเดียวกันครับ k.ต้อม 0804224466




ข้อมูลเพิ่มเติม

เป็นผลิตภัณฑ์ดูแลผิวจากประเทศญี่ปุ่น ซึ่งทางทีมงานได้เข้าไปทำระบบไฟฟ้าและควบคุมเจ้าตัวมาสคอตดังรูปด้านล่าง โดยทำเป็นเกม ให้ผู้เล่นแข่งกันตบแก้ม ใครตบเก่งก็เป็นผู้ชนะไปนะครับ






วันจันทร์ที่ 24 กุมภาพันธ์ พ.ศ. 2557

รับออกแบบและเขียนโปรแกรม ด้วย Arduino ไมโครคอนโทรลเลอร์ตะกูล AVR สำหรับโปรเจคขนาดเล็ก-ขนาดกลาง หรือที่มีความซับซ้อนไม่มาก สามารถใช้ Arduino ควบคุมระบบได้

ติดต่อ 080-422-4466 (ต้อม)
email: automation999.engineer@gmail.com

วันศุกร์ที่ 21 กุมภาพันธ์ พ.ศ. 2557

รับทำโปรเจคจบนักศึกษาราคาถูก

-งานไฟฟ้า 
-งานอิเล็กทรอนิกส์
-งาน Microcontroller
-งาน PLC SCADA HMI
-งานโปรแกรม Android

ติดต่อ
พรประเสริฐ 
080-422-4466

วันพุธที่ 19 กุมภาพันธ์ พ.ศ. 2557


ฟังก์ชัน Division : DIV PLC Mitsubishi

คำสั่งประยุกต์ประเภทนี้เป็นคำสั่งที่ทำหน้าที่ในการหารค่าของข้อมูลระหว่างอุปกรณ์ต้นทาง S1 และหารด้วยอุปกรณ์ต้นทาง S2 และจัดเก็บที่อุปกรณ์ปลายทาง D        

ตัวอย่างเช่น
S1 =  5
S2 =  5
D = ?

จากสมการ S1 / S2  =  D แทนค่าในสมการ 5 / 5 = 1 คำตอบ D = 1




 อธิบายจากรูป Division มีสัญลักษณ์ที่ใช้ในภาษา IL สำหรับ 16 บิต คือ DIV (Division ) และ DIVP (Division Pulse) มี Program Steps เท่ากับ 7  ส่วน 32 บิต คือ DDIV (Double Division ) และ DDIVP (Double Division Pulse) มี Program Steps เท่ากับ 13

ตัวอย่างโปรแกรม PLC DIV 16 บิต



เขียนโปรแกรมดังรูปด้านบนแล้วกำหนดให้
D10 = 5
D12 = 5
เมื่อ X0 ทำงาน หรือ Active D10 / D12 =  D14  เฉพาะนั้น D14 = 1

ตัวอย่างโปรแกรม PLC DDIV 32 บิต
     

เขียนโปรแกรมดังรูปด้านบนแล้วกำหนดให้
D10 = 100000
D12 = 1
เมื่อ X0 ทำงาน หรือ Active D10 / D12 =  D14  เฉพาะนั้น D14 = 100000  



คำสั่ง Arithmetic, Logical Operations อื่น ๆ

ฟังก์ชัน Addtion : ADD PLC Mitsubishi

ฟังก์ชัน Subtraction : SUB PLC Mitsubishi

ฟังก์ชัน Multipication : MUL PLC Mitsubishi

วันอาทิตย์ที่ 16 กุมภาพันธ์ พ.ศ. 2557

ฟังก์ชัน Multipication : MUL PLC Mitsubishi
คำสั่งประยุกต์ประเภทนี้เป็นคำสั่งที่ทำหน้าที่ในการคูณค่าของข้อมูลระหว่างอุปกรณ์ต้นทาง S1 และคูณด้วยอุปกรณ์ต้นทาง S2 และจัดเก็บที่อุปกรณ์ปลายทาง D
           ตัวอย่างเช่น
S1 =  5
S2 =  5
D = ?

จากสมการ S1 x S2  =  D แทนค่าในสมการ 5 x 5 = 25 คำตอบ D = 25




 อธิบายจากรูป Multipication มีสัญลักษณ์ที่ใช้ในภาษา IL สำหรับ 16 บิต คือ MUL (Multipication) และ MULP (Multipication Pulse) มี Program Steps เท่ากับ 7  ส่วน 32 บิต คือ DMUL (Double Multipication) และ DMULP (Double Multipication Pulse) มี Program Steps เท่ากับ 13

ตัวอย่างโปรแกรม PLC MUL 16 บิต


เขียนโปรแกรมดังรูปด้านบนแล้วกำหนดให้
D10 = 5
D12 = 5
เมื่อ X0 ทำงาน หรือ Active D10 x D12 =  D14  เฉพาะนั้น D14 = 25 

ตัวอย่างโปรแกรม PLC DMUL 32 บิต




เขียนโปรแกรมดังรูปด้านบนแล้วกำหนดให้
D10 = 5
D12 = 100000
เมื่อ X0 ทำงาน หรือ Active D10 x D12 =  D14  เฉพาะนั้น D14 = 500000  

คำสั่ง Arithmetic, Logical Operations อื่น ๆ
ฟังก์ชัน Addtion : ADD PLC Mitsubishi
ฟังก์ชัน Subtraction : SUB PLC Mitsubishi
ฟังก์ชัน Multipication : MUL PLC Mitsubishi

วันเสาร์ที่ 15 กุมภาพันธ์ พ.ศ. 2557

เครื่องให้จังหวะ การปั๊มหัวใจ และผายปอด

หลักการทำงาน กดปุ่มเริ่มมีสัญญาณเตรียมตัว 5 วินาทีจากนั้น กระพริบพร้อมเสียง 0.6 วินาที 30 ครั้ง และ 15 วินาที 2 ครั้ง ทำงานซ้ำเรื่อยๆ จนกว่าจะกดปุ่มหยุด


ประกอบไปด้วย
MCU >> Arduino R3
LED 
BUZZER

ด้านหลังมีช่องใส่ถ่าน

ปุ่มกดติด-ปล่อยดับ LED สีแดง Switch Power




วันอังคารที่ 11 กุมภาพันธ์ พ.ศ. 2557

จากรูปด้านบน มี 2 input com1(ติดสวิตช์ปิด-เปิด) และ com2 

มี 2 output คือ monitor 1 และ projector 1 พร้อม Switch เลือกสัญญาณ Input

 ใช้ไฟ 220 ac แปลงเป็น 5V


ด้านในเป็นรูปวงจร IC4066