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

วันนที่16 ที่Fibo

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






-PWM คืออะไร 
PWM จะใช้หลักการที่ส่งค่าแบบดิจิตอลคือ 0-1 ด้วยความถี่ค่าหนึ่ง แต่จะส่งค่าให้มีสัญญาณสูง(1)สลับกับสัญญาณต่ำ(0) โดยให้ระยะเวลาของแต่ละชนิดสัญญาณต่างกัน เพื่อให้ค่าเฉลี่ยของสัญญาณทั้งหมดออกมาเป็นค่าที่ต้องการนั่นเอง เช่นถ้าเราส่งค่าที่มีระยะสัญญาณสูงและต่ำเท่ากัน ก็จะได้ค่าเป็น 2.5 โวล์ ถ้าเราให้ค่าสัญญาณสูงยาวกว่า เราก็จะได้ค่ามากกว่า 2.5 และในทำนองเดียวกันถ้าเราให้ค่าสัญญาณต่ำยาวกว่า เราก็จะได้ค่าเฉลี่ยน้อยกว่า 2.5 นั่นเอง Arduino สามารถรับค่าอนาล็อคได้ 255 ระดับ ดังนั้นหมายความว่าค่าสัญญาณ 0 โวล์ถึง 5 โวล์ ก็จะแสดงได้เป็น 0 ถึง 255 ในสัญญาณดิจิตอลนั่นเอง โดยเราสามารถใช้หลักบัญญัติไตรยางค์ สามารถเปรียบเทียบค่าได้เลย ในการใช้งาน PWM เราจะต้องเลือกขาที่เขียนว่าเป็น PWM เท่านั้น
ตัวอย่างโปรแกรม
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
for (int i=1; i<256; i++){
analogWrite(13, i);
delay(10);
}
for (int i=255; i>=0; i--){
analogWrite(13, i);
delay(10);
}
delay(3000);
}
สังเกตุว่าเมื่อไฟมีช่วงคาบเวลาสูงคือ 255 ไฟจะสว่างสุด ถ้าคาบเวลาเป็น 0 ไฟจะดับลง
ตัวอย่างการประยุกต์คือ เอาไว้ใช้ในการ MOD การรับส่งค่าด้วยการส่งแบบอินฟาเรด ซึ่งสามารถส่งเป็น ASCII ได้เลย หรือเอาไว้ต่อกับ TRIAC เพื่อปรับหน่วงไฟอัตโนมัติใช้ในรถยนต์เมื่อเจ้าของสั่งปิดล๊อคประตู โดยให้ค่อยๆหรี่ลงเป็นลำดับก็เท่ไปอีกแบบนะครับ ที่เหลือก็แล้วแต่จะนำไปปรับใช้ครับ
แหล่งที่มาอ้างอิง https://www.facebook.com/permalink.php?id=205375546266456&story_fbid=343883472415662

-ตัวอย่างโค้ดการใช้งาน 
analogWrite() แต่แบบนี้เราต้องต่อ poten

int ledPin = 9;      // LED connected to digital pin 9 int analogPin = 3;   // potentiometer connected to analog pin 3 int val = 0;         // variable to store the read value void setup() {   pinMode(ledPin, OUTPUT);   // sets the pin as output } void loop() {   val = analogRead(analogPin);   // read the input pin   analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 }  

-PIDหรือDC motor control with PID คือ การfeedback ไปยัง microcontroller





#include <Encoder.h>

Encoder myEnc(2, 18); //(digital 2, analog 4)


void setup() {
  Serial.begin(9600);
  Serial.println("Basic Encoder Test:");
}

long oldPosition  = -999;

void loop() {
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}

โค้ดที่ยกมานี้ยังไม่ได้ทำขึ้นเองหรือดัดแปลง แต่จะนำมาเป็นแนวทางเพื่อนำไปศึกษาและทำงาน
-ในขณะนี้ผมกำลังจะเอาค่าที่วัดได้จาก encoder มาควบคุมความเร็วมอเตอร์ หรือไปควบคุมPWM แต่ยังคงทำไม่ได้ เพราะความรู้ยังไม่ครอบคุมเนื้อหาเท่าที่ควร

ไม่มีความคิดเห็น:

แสดงความคิดเห็น