วันพุธที่ 11 มีนาคม พ.ศ. 2558

Arduino Note 11/3/15

Arduino Note 11/3/15
                 

จากการอ่านเรื่องmotorสรุปได้ว่า

        Motor คือ อุปกรณ์ไฟฟ้าที่เปลี่ยนฟลังงงานไฟฟ้าเป้นพลังงานกล มีหลักการทำงานคือการใช้ขดลวดเหนี่ยวนำทำให้เกิดสนามแม่เหล็กไฟฟ้าขึ้น และเกิดแรกผลัก-ดูด ของสนามแม่เหล้ก ซึ่งเราสามารถสร้างรูปแบบของแรงที่เกิดจากmotorได้ออกมา2แบบคือ 1.Linear fore และ 2.Toque
        Motorมีมากมายหลายชนิด ส่วนใหญ่ที่เราเห็นและพบกันบ่อยๆจะเป้นmotorที่ให้รูปแบบแรงแบบtoque หรือแบบหมุนนั่นเอง เช่น พัดลม เครื่องดูดฝุ่น เครื่องปั่น-บด-ผสมอาหาร เป็นต้น
       แต่motorยังมีอีกมากมายหลายชนิดถ้าจำแนกตามประเภทไฟฟ้าที่จ่ายเข้าไปก้ได้2แบบ คือDC motor และ AC motor

DC motor คือ
          motorที่รับไฟฟ้ากระเเสตรง สามารถควบคุมความเร็วได้ง่าย และเมื่อต้องการสับเปลี่ยนทิศทางการหมุนสามารทำได้ง่ายๆโดยการสับเปลี่ยนขั้วไฟเท่านั้น การหมุนจะถูกสับเปลี่ยนทันที

AC motor คือ
          motorที่ใช้ไฟฟ้ากระแสสลับ เราแบ่งAC motorได้เป้น2แบบ Synchronous และAsynchronous 
            1.Asynchronous  มีความสามารในการสร้างspeedได้คงที่กว่าDC motor มีประสิทธิภาพที่สูงกว่า อีกทั้งยังราคาถูกกว่าด้วย แต่มีข้อจำกัดด้านการควบคุมระยะการหมุนที่แม่นยำ และในช่วงเริ่มต้นการทำงาน AC motorจะมีประสิทธิภาพต่ำ  สว่นใหญ่ใช้ในเครื่องใช้ไฟฟ้าในบ้าน (เครื่องมือที่ตั้งอยุ่กับที่ เช่นสว่านแท่นเป็นต้น)

     2.Synchronous เป้นAC motorที่มีประสิทธิภาพสูงความเร็วคงที่หรือปรับได้ มีเสียงรบกวนต่ำเช่นHysteresis motor

Motorแบบอื่นๆ
         
           servo motor =>คือmotorที่มีความสารมารถในการควบคุมความเร็วรอบและtorqueได้ มี

ทั้งแบบใช้ไฟกระแสตรง(DC) และไฟฟ้ากระแสสลับ(AC) 
            
            stepper motor=>คือmotorที่มีความแม่นยำในการหมุน โดยโรเตอร์ของแม่เหล็กจะ

ประกอบด้วยแม่เหล้กถาวร ซึ่งทำให้มันสามารหมุนได้อย่างเป้นstepคือ หมุนแล้วหยุด หมุนแล้ว

หยุด เราสามารถควบคุมมันได้ด้วยวงจรอิเล้กรอนิกส์ ซึ่งทำให้มันสามารถหมุนและเปลี่ยนทิศทาง

หรือหยุดพัก และหมุนต่อไปได้อย่างแม่นยำ นอกจากนี้ยังสามารถควบคุมแรงละรอบได้ด้วย ซึ่ง

ความสามารถเหล่านี้ของstepper motor ได้มาจากรูปแบบของservoนั่นเอง ใช้มากในเครืองจักที่

ต้องการความแม่นยำสูง เช่นCNC  , Hard disk เป็นต้น



วันจันทร์ที่ 9 มีนาคม พ.ศ. 2558

Arduino note 9/3/15



Arduino note 9/3/15
               
          สิ่งที่ได้วันนี้ -ลองเอาcode 7-segment มาใส่ในboardจริง พบปัญหาคือ
                         1.ไม่ทราบpinแต่ละอันของsegmentทำให้ต้องทดลองไล่ขาแต่ละอันไปเรื่อยๆจนครบ
                         2.แถบsegmentขึ้นพร้อมกันทั้ง2หลัก เมื่อรันโปรแกรม (ต้นเหตุเดียวกับข้อเเรก)
                            (ปล.วันนี้ไม่ได้ถ่ายวิดีโอไว้ ครั้งหน้าผมจะลงตามให้5555)

                         -เริ่มลองเขียนโค้ดการใช้LDR โดยวางแผนไว้2แบบคือ
                 แบบแรกให้ LDR รับค่าเข้ามา โดยกำหนดความเร็วในการรับข้อมูลเข้าด้วย Serial.begin(9600); และเก็บเข้าที่ตัวแปรvalue ด้วยSerial.println(value); จากนั้นให้ปรับค่าที่รับมาลดลง4เท่า โดยใช้ value/=4 และให้แสดงผลความสว่างของไฟoutput โดยใช้ ==>analogWrite(led,value);
                 แบบที่สอง ให้LDRรับค่าเข้ามาและเก็บที่ตัวแปรvalueด้วยวิธีเดียวกับแบบแรก และสร้างตัวเเปรbaseขึ้นมาเพื่อใช้เป็นเกณฑ์ในการตรวสอบค่าที่รับเข้า และสร้างเงื่อนไขแรก if(value<base){} และให้คำสั่ง digitalWrite(led,HIGH);
              delay(value);
              digitalWrite(led,LOW);
              delay(value);
ในวงเล็บเงื่อนไขของif ซึ่งผมได้ลองใช้หลอดไฟ3ดวงในการเช็คความถี่ เมื่อค่าที่รับมาเปลี่ยนไปเรื่อยๆ
และกำหนดเงื่อนไขที่อื่นๆที่มากกว่าเกณฑ์ของbase ด้วย else{} และให้คำสั่ง digitalWrite(led,HIGH);
ในวงเล็บเงื่อนไขกับหลอดLEDทั้ง3ดวงเพื่อเป็นตัวบอกว่า ในขณะนี้ค่าทีรับมามากกว่าเกณฑ์baseแล้ว

                  ซึ่งผลที่ออกมาพบว่าแผนที่วางไว้แบบแรกค่อนข้างไม่ตรงกับีท่คาดหวังมากเนื่องจากค่าขนาดใส่เข้าไปในanalogWriteใกล้กันมากผลที่สังเกตไฟได้จึงค่อนข้างแยกออกจากกันได้ยาก
                  ส่วนผลของแบบที่สองนั้นได้ผลออกมาตรงกับที่คาดไว้คือเมื่อลดความสว่างของแสง ไฟ3ดวงจะวิ่งด้วยความเร็วที่เพิ่มขึ้น และเมื่อให้แสงสว่างเต็มที่(ให้ความสว่างสูงกว่าเกณฑ์base) ไฟทั้งสามดวงจะสว่างพร้อมกัน
http://123d.circuits.io/circuits/635574-ldr-frequence-of-led


                   -เมือได้ทดลองในsimulatorเรียบร้อยแล้ว ผมจึงลองเอาcodeของแบบที่สองมาcompliedใส่กับบอร์ดจริงดู  ในตอนแรกพบว่าเกิดความผิดพลาดขึ้นคือไฟทั้ง3วิ่งช้าและเร็วสลับกันไปเอง และเมื่อเช็คค่าที่รับเข้ามาโดยSerial Monitorดุพบว่า ค่าที่รับเข้านั้นไม่คงที่และสลับมากน้อยไปเรื่อยๆ เมื่อลองถามพี่ๆในห้องดุพี่เค้าก็มาช่วยดู หลังจากเช็คได้ก็พบว่าผมใส่pinรับเข้าของsensorผิดตัว(ปัญหาคือboardบอกขาของLDRกับsensorวัดอุณหภูมิใกล้กัน เลยดูผิดนั้นเอง)
                   -เมื่อแก้ไขเสร็จแล้วพบว่าสามารถทำงานตามที่programได้จริงเหมือนกับที่ทดสอบในsimulatorเช่นกัน

                        -  Number base คืออะไร?
             ยกตัวอย่างเลขฐานสิบ==> คือเลขที่มีสัญลักษณ์แทนตัวเลขทั้งหมด10จำนวนคือ 0 1 2 3 4 5 6 7 8 9 ซึ่งเราใช้และพบเจอกันทุกๆวันนี้นั่นเอง
         เลขฐาน16 ก็จะเป็น  0 1 2 3 4 5 6 7 8 9 A B C D E F เช่นกัน
 ซึ่งเมื่อเลขฐานแทนสัญลักษณ์ในตัวที่มากที่สุดของเลขฐานนั้นแล้ว จะทำให้ขึ้นหลักใหม่ คือรีเซ็ตเลขในหลักแรกให้เป้นค่าที่น้อยที่สุดและเพิ่ม+1ค่าในหลักต่อไป
เช่น 1010  11102 เป็นต้น

การแปลงค่าเลขฐาน

แปลงฐาน16เป้นฐาน10
Ex.1
  1916 =(1x16^1)+(9x16^0)
         = (16)+(9) = 2510

Ex.2
A316  = (10x 16^1)+(3x16^0 )
         = 160+3 =16310
โดยเมื่อเรานำเลขฐานมาใช้กับการprogramming ส่วนใหญ่ภาษาคอมพิวเตอร์จะเป็นเลขฐานสอง ข้อมูลที่เป็นขาไฟที่จ่ายออก8ขาจะมีข้อมูล8บิต พอแปลงเป็นฐานสองจะได้เลขทั้งหมด8หลัก
เช่น
FF16 = 11111111
A116 = 10110001
เป้นต้น

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

Arduino Note 8/3/15


Arduino Note 8/3/15
     
        สิ่งที่ได้ -นำความรู้เรื่องSegmentมาลองใช้กับ123D circuit
                    http://123d.circuits.io/circuits/633562-segment-roll-and-count


                    -โดยได้ลองวางpatternไว้2แบบคือ 1. roll patternในปุ่มแรก
                                                                            2.Count 1-9 patternในปุ่มที่สอง
                    -สงสัยว่าจะนำเรื่องเลขฐานมาใช้กับSegmentได้มัย? เนื่องจากโค้ดที่เขียนมีความยาวมากเลยทีเดียว
                    -ลองศึกษาเกี่ยวกับการใช้LDR sensor คร่าวๆ ได้รู้จักถึงความสำคัญและการนำไปใช้ง่ายๆ ซึ่งมีหลักการคือสารกึ่งตัวนำในLDRจะมีความสามารถในการต้านทานไฟลดลงเมื่อมีแสงสว่างมากขึ้น
ในบางครั้งก็นำมาใช้เป็นSensorตรวจจับวัตถุก็ได้

LED Run Arduino Note 6/3/15







Arduino Note 6/3/15
          สิ่งที่ได้ทำ -ทบทวนเลขฐาน 2,8,10,16
     

                            -ได้ลองCompiled Program ลฃใน Arduino UNO board (บอร์ดของจริงเลย!!!)
                            -coding programไฟวิ่ง 1.--->,<---- (8LED)
                                                                2.----><---,<-----> (8LED)
                             -จากโจทย์ข้อ2. ทำให้ได้ลองใช้switch case ครั้งแรก
                            -ได้ลองหาความรู้เพิ่มเติมเกี่ยวกับSegment(ไฟตัวเลข)