หัวข้อ

ram transistor zener diode กราวนด์ดิจิตอล (Digital Ground) คืออะไร? การคำนวณเลขฐาน การต่อสัญญาณแบบบาลานซ์(Balanced System) การทำงานเครื่องขยายเสียงคลาสดี การนำไมโครคอนโทรลเลอร์ไปใช้งาน การประยุกต์ใช้ ESP32 และ ESP8266: ก้าวสู่โลก IoT การเข้าโหมดเซอร์วิส การเปลี่ยนฐานของระบบเลข การเลือกลำโพง การเลือกแอมป์ให้กับลำโพง การใช้งาน Arduino Uno ร่วมกับ เซอร์โวมอเตอร์ การ์ดแสดงผล กำลังวัตต์กับความดัง คลาสต่างๆ ความเปลี่ยนแปลงของเครื่องเสียงยุคดิจิตอล ค่าความเพี้ยนกับค่าS/N จอมอนิเตอร์ ซีดีทรานสปอร์ต(CD TRANSPORT) ตัวต้านทานปรับค่าได้(Variable Resistor) ตัวต้านทานและการใช้งาน ตัวเก็บประจุ(Capacitor ทรานซิสเตอร์ ทำไม?แรมบางรุ่นถึงแพงกว่าเมนบอร์ด ทิศทางการเติบโตตลาด AMD ในปัจจุบัน ทีวีสี ภาคต่างๆของเครื่องขยายเสียง รหัสไบนารี่(Binary Codes) ระบบควบคุมการชาร์จแบตเตอรี่จากโซลาร์เซลล์ ระบบเลขฐาน ระบบโซลาร์เซลล์ ระบบโซลาร์เซลล์แบบ Off-Grid และ On-Grid อินเวอร์เตอร์ที่ใช้ในระบบโซลาร์เซลล์ อิเล็กทรอนิกส์ อุปกรณ์ระบายความร้อนในคอมพิวเตอร์ อุปกรณ์อิเล็กทรอนิกส์ ฮาร์ดดิสก์ หรือ SSD เขียนโปรแกรม Arduino ด้วยภาษาซี เขียนโปรแกรม Arduino ด้วยภาษาซี 2 เขียนโปรแกรม Arduino ด้วยภาษาซี 3 เขียนโปรแกรม Arduino ด้วยภาษาซี คำสั่งพื้นฐานที่ควรเรียนรู้ เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 5 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 6 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 7 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 8 เขียนโปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่1 เครื่องขยายเสียงคลาสดี(Class D) เบอร์แทน เพาเวอร์ซัพพลาย เพาเวอร์แบงค์บอกค่าความจุจริงหรือเฟค เมนบอร์ด (Motherboard) แนะนำ CPU และ GPU ราคาประหยัด ใช้งานได้ถึงปี 2030 แนะนำ ซีพียู งาน AI ฝั่ง RED Team แนะนำ ซีพียูสาย AI รุ่นท็อปขายดี แอลอีดี(LED) โครงสร้างไมโครคอนโทรลเลอร์ ตระกูล PIC โปรแกรม Arduino ด้วยภาษาซี ตัวอย่างที่ 4 โวลลุ่มคอนโทรลแบบ AAVA ไดโอด ไมโครคอนโทรลเลอร์ ไมโครคอนโทรลเลอร์ในปี 2025 ไอซี ไอซีตั้งเวลา LM555
แสดงเพิ่มเติม

การใช้งาน Arduino Uno ร่วมกับ เซอร์โวมอเตอร์

 ในการใช้งาน arduino uno ร่วมกับ เซอร์โวมอเตอร์ ตัวอย่างนี้จะใช้เอาท์พุตดิจิตอลธรรมดา แต่สัญญาณ PWM จะสร้างขึ้นจากฟังก์ชั่นที่อ้างอิงจากไฟล์ Servo.h และรูปแบบใช้งานคำสั่งก็คือ Servo myservo;   คือ การประกาศฟังก์ชั่น myservo.attach(9); คือ การกำหนดขาเอาท์พุต myservo.write(pos); คือ เขียนข้อมูลออก ในที่นี้ใช้ตัวแปร pos ในการเก็บค่า ต่อวงจรตามภาพ เขียนโปรแกรมดังนี้ #include <Servo.h> Servo myservo;  // ประกาศใช้งานฟังก์ชั่นเซอร์โว จากไฟล์ servo.h int pos = 0;    // กำหนดตัวแปรเก็บค่าตำแหน่งเซอร์โว void setup() {   myservo.attach(9);  // กำหนดขาใช้งานในบอร์ด คือ ขา9 void loop() {   for (pos = 0; pos <= 180; pos += 1) { // ใส่ค่าตำแหน่งเริ่มจาก 0 ถึง 180 องศา โดยเพิ่มค่าทีละ 1 องศา       myservo.write(pos);              // เขียนคำสั่งจากค่าตัวแปรเก็บตำแหน่ง เพื่อส่งค่าออกเอาท์พุต     delay(15);            ...

การใช้งานขาสัญญาณ Analog ของ Arduino (PWM)

ขาอนาล็อกใน Arduino: สัญญาณ พารามิเตอร์ และตัวอย่างใช้งาน

การใช้งานขา “สัญญาณอะนาล็อก” ใน Arduino (PWM) เป็นสัญญาณออก

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

พื้นฐานเกี่ยวกับขาอนาล็อกบนไมโครคอนโทรลเลอร์ตระกูล Arduino พารามิเตอร์สำคัญที่ต้องกำหนด

1) อนาล็อกอินพุต (ADC) คืออะไร

บอร์ด Arduino UNO ใช้ไมโครคอนโทรลเลอร์ ATmega328P ที่มีตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC) ความละเอียด 10 บิต ทำให้ค่าที่อ่านได้จาก analogRead() อยู่ในช่วง 0 – 1023 

ซึ่งสอดคล้องกับแรงดันอินพุตตั้งแต่ 0V ถึงแรงดันอ้างอิง (VREF) ของบอร์ด (โดยทั่วไปคือแรงดันทำงาน 5V บน UNO รุ่นคลาสสิก)

สูตรคำนวณแรงดันจากค่าอ่าน: V = reading * Vref / 1023.0

พินที่ใช้ได้

A0–A5 คือขาอนาล็อกอินพุตบน UNO และยังใช้งานเป็นดิจิทัล D14–D19 ได้เมื่อจำเป็น

แรงดันอ้างอิง (Analog Reference)

  • DEFAULT = Vcc ของบอร์ด (เช่น ~5V)
  • INTERNAL ≈ 1.1V (บน AVR บางรุ่น)
  • EXTERNAL ใช้แรงดันภายนอกที่ขา AREF (อย่าลืมตั้ง analogReference(EXTERNAL) ก่อนอ่านค่า)

ความเร็ว/อัตราสุ่ม

การแปลงหนึ่งครั้งใช้เวลาประมาณ 13 คล็อกของ ADC; ค่าปริยายทำให้ได้ราว ๆ 9–10 kSPS บน CPU 16MHz

อิมพีแดนซ์ของแหล่งสัญญาณ

แนะนำให้แหล่งสัญญาณมีอิมพีแดนซ์ ≤ 10 kΩ เพื่อให้ตัวเก็บตัวอย่างของ ADC ชาร์จได้เต็มในเวลาที่กำหนด

ตัวอย่างโค้ด: อ่านแรงดันที่ A0

// อ่านแรงดันอนาล็อกที่ A0 และพิมพ์เป็นโวลต์
const int pinAnalog = A0;
const float Vref = 5.0;         // หากใช้ analogReference(DEFAULT) บน UNO

void setup() {
  Serial.begin(9600);
  analogReference(DEFAULT);     // INTERNAL หรือ EXTERNAL ก็ได้ตามการใช้งาน
}

void loop() {
  int raw = analogRead(pinAnalog);           // 0..1023
  float voltage = raw * Vref / 1023.0;       // โวลต์ประมาณค่า
  Serial.print("ADC="); Serial.print(raw);
  Serial.print("  V="); Serial.println(voltage, 3);
  delay(200);
}

2) “อนาล็อกเอาต์พุต” ของ Arduino: PWM

Arduino UNO ไม่มี DAC จริง ๆ เอาต์พุตอนาล็อกจึงสร้างด้วยเทคนิค PWM (Pulse-Width Modulation) คือการสลับสัญญาณดิจิทัล ON/OFF ที่ความถี่คงที่ แล้วปรับ “สัดส่วนเวลาที่เป็น ON” (duty cycle) ให้ได้ค่าเฉลี่ยเทียบเท่าแรงดันอนาล็อก

ลักษณะสัญาณ PWM แสดงองค์ประกอบ

ขา PWM บน UNO

3, 5, 6, 9, 10, 11 (มีสัญลักษณ์ ~ บนบอร์ด)

ความถี่ PWM โดยปริยาย

  • ประมาณ 490 Hz: ขา 3, 9, 10, 11
  • ประมาณ 980 Hz: ขา 5, 6

ช่วงค่า

analogWrite(pin, value) โดย value = 0..255 (8 บิต) → 0%..100% duty cycle

แรงดันเฉลี่ยที่โหลดเห็น

Vavg ≈ duty × Vcc (เช่น duty 60% บน 5V → ~3V เฉลี่ย)

ตัวอย่างโค้ด: หรี่ไฟ LED ด้วย PWM

// ค่อยๆ เพิ่ม/ลดความสว่าง LED ที่ขา 9 (PWM)
const int ledPWM = 9;

void setup() {
  pinMode(ledPWM, OUTPUT);
}

void loop() {
  for (int v = 0; v <= 255; v++) {  // fade in
    analogWrite(ledPWM, v);
    delay(8);
  }
  for (int v = 255; v >= 0; v--) {  // fade out
    analogWrite(ledPWM, v);
    delay(8);
  }
}

3) เคล็ดลับการใช้งานให้แม่นยำ

  • ต้องกำหนด analogReference() ให้ตรงกับการต่อวงจรจริง (DEFAULT/INTERNAL/EXTERNAL)
  • ถ้าใช้ AREF ภายนอก ให้ตั้ง EXTERNAL ก่อนเรียก analogRead() และอย่าป้อนไฟเกินสเปก
  • หากแหล่งสัญญาณมีอิมพีแดนซ์สูง ควรใช้บัฟเฟอร์ (op-amp โหมดตามค่า) หรือใส่ตัวเก็บลัดริปเปิลตามคู่มือ
  • จำไว้ว่าค่า PWM = “ค่าเฉลี่ยเชิงเวลา” ถ้าต้องการแรงดัน DC เนียน ๆ ให้ผ่านตัวกรอง RC หรือใช้ DAC ภายนอก


แผงพิน Arduino Uno (มีระบุ A0–A5 และขา ~PWM เพื่อความสะดวกในการต่อใช้งาน)

1. พื้นฐานของ analogWrite() และ PWM 

• Arduino ไม่มี DAC (Digital-to-Analog Converter) ของจริง แต่ใช้ PWM คือการเปิด–ปิดสัญญาณดิจิทัลอย่างรวดเร็วเพื่อสร้างค่าเฉลี่ยที่เหมือนแรงดันอะนาล็อก 
• ฟังก์ชัน:  analogWrite(pin, value) 
• pin: ขาที่รองรับ PWM (มีเครื่องหมาย ~ เช่น 3, 5, 6, 9, 10, 11 บน UNO) 
• value: ค่าจาก 0 ถึง 255 — 0 เท่ากับ OFF (0%), 255 เท่ากับ ON ตลอด (100%)

2. รูปแบบสัญญาณ PWM
• Duty Cycle = (เวลาสตาร์ท = ON) / (เวลารวมรอบเล็ก) 
• ยกตัวอย่าง: ถ้า period = 2 ms และ ON = 1.2 ms → duty cycle = 60%
• ค่าเฉลี่ยแรงดัน = 5 V × duty cycle → เช่น 60% ≈ 3 V 
• Frequency: บน Arduino UNO ขาพื้นฐาน (3,6,9,10) อยู่ที่ราว 490 Hz และขา 5,6 ที่ประมาณ 980 Hz 

3. พารามิเตอร์ที่ต้องกำหนดในโค้ด 
• ต้องใช้ขาที่สนับสนุน PWM (~) และเซ็ตเป็น output ด้วย pinMode() ก่อนใช้งาน analogWrite()
• analogWrite() จะสร้างสัญญาณ PWM ด้วย duty cycle ตาม value และทำสัญญาณคงอยู่จนกว่าจะเปลี่ยนผ่านคำสั่งอีกครั้ง

4. การประยุกต์ใช้งาน 
• ควบคุมความสว่าง LED, ความเร็วมอเตอร์, หรือระดับเสียงเบส 
• หากต้องการแรงดันเฉลี่ยระหว่าง 0–5 V: averageVoltage = (value / 255) × 5V 
• การเพิ่ม–ลด v สุทธิแต่ละรอบ ทำให้ LED ค่อยๆ สว่างและหรี่ลงตามค่า PWM จริง ๆ โดยค่าเฉลี่ยแรงดันเปลี่ยนไล่ขึ้น/ลงพร้อมกัน 

สรุปสาระสำคัญ รายละเอียด ความหมายของ PWM การสลับ ON/OFF อย่างรวดเร็วเพื่อสร้างแรงดันเฉลี่ย analogWrite() ใช้กับขา PWM สร้างสัญญาณ PWM ตามค่าจาก 0–255 Duty Cycle & Frequency กำหนดปริมาณ ON และความถี่สัญญาณ PWM การใช้งานจริง ควบคุม LED, มอเตอร์, เสียง เป็นต้น



โพสต์ยอดนิยมจากบล็อกนี้

คลาสต่างๆของวงจรขยายเสียง

เฟต(FET)

การเปลี่ยนฐานของระบบเลข