การฝึกต่อวงจรแบ่งแรงดันบนเบรดบอร์ดร่วมกับบอร์ด Arduino Uno#

บทความนี้กล่าวถึง การฝึกต่อวงจรบนเบรดบอร์ดและใช้งานร่วมกับบอร์ด Arduino แบบเสมือนจริง รวมถึงแนะนำการเขียนโค้ด Arduino Sketch ในเบื้องต้น

Keywords: Circuit Simulation, Arduino Uno, Tinkercad Circuits, Voltage Dividers, Variable Resistors


▷ การทดลองวงจรแบ่งแรงดันไฟฟ้า (Voltage Divider)#

วงจรแบ่งแรงดันไฟฟ้าประกอบด้วยตัวต้านทานอย่างน้อย 2 ตัว นำมาต่ออนุกรมกัน และมีการป้อนแรงดันไฟฟ้า เช่น จากแหล่งจ่ายแรงดันคงที่ให้กับวงจร (DC Voltage Supply) ถ้าตัวต้านทานตัวใดตัวหนึ่งมีค่าความต้านทานเปลี่ยนแปลงได้ (เช่น ค่าความต้านทานเปลี่ยนแปลงตามสภาพแวดล้อม) ก็จะทำให้แรงดันตกคร่อมที่ตัวต้านทานแต่ละตัวเปลี่ยนแปลงตาม

รูป: ตัวอย่างวงจรแบ่งแรงดันไฟฟ้า

ตัวอย่างแรกเริ่มต้นด้วยการนำตัวต้านทานคงที่ 2 ตัว นำมาต่ออนุกรมกัน ดังนั้นเมื่อป้อนแรงดันไฟเลี้ยงให้กับตัวต้านทานที่ต่ออนุกรมกัน จะได้กระแส I ไหลผ่านตัวต้านทานแต่ละตัวในปริมาณที่เท่ากัน ยกตัวอย่างเช่น ป้อนแรงดันคงที่ VS=+5V ให้กับตัวต้านทาน R1 และ R2 ที่ต่ออนุกรมกัน และให้ปลายด้านหนึ่งของ R1 ต่อกับ GND ของวงจร และให้ปลายด้านหนึ่งของ R2 ต่อกับแรงดันไฟเลี้ยง VS ดังนั้นจึงสามารถคำนวณแรงดันตกคร่อมที่ตัวต้านทานแต่ละตัวได้ไม่ยาก

ตัวอย่างการต่อวงจรทดลองสำหรับ Tinkercad Circuits มีดังนี้

รูป: การวัดแรงดันตกคร่อมของวงจรแบ่งแรงดันที่ประกอบด้วย และ โอห์ม

วงจรประกอบด้วยตัวต้านทาน และ โอห์ม มีแหล่งจ่าย ดังนั้นแรงดันตกคร่อมที่ตัวต้านทานแต่ละตัว จะได้เท่ากับ

 

ถัดไปเป็นตัวอย่างการทดลองใช้ตัวต้านทานปรับค่าได้แบบ 3 ขา หรือ Potentiometer และนำมาสร้างเป็นวงจรแบ่งแรงดันไฟฟ้า ดังต่อไปนี้

รูป: การวัดค่าความต้านทานของตัวต้านทานปรับค่าได้ 10k โอห์ม และการวัดแรงดันตกคร่อมของวงจรแบ่งแรงดัน

เมื่อจำลองการทำงานและลองปรับตำแหน่งของตัวต้านทานปรับค่าได้ จะทำให้แรงดันตกคร่อมที่ตัวต้านทาน R1 และ R2 เปลี่ยนแปลงได้ แต่ผลรวมจะเท่ากับแรงดันของแหล่งจ่าย

จากตำแหน่งของตัวต้านทานแบบหมุนปรับค่าได้ในรูปตัวอย่าง หากวัดด้วยโอห์มมิเตอร์จะได้ค่าความต้านทาน 6.8k และ 3.2k โอห์ม และได้ผลรวมเท่ากับ 10k โอห์ม ดังนั้นกรณีนี้ และ โอห์ม และวัดได้แรงดันตกคร่อมได้ดังนี้

หากลองปรับหมุนปุ่มของตัวต้านทานปรับค่าได้จากตำแหน่งมุมซ้ายสุดไปขวาสุด และวัดแรงดันไฟฟ้าที่ได้ จะเห็นได้ว่า ค่าที่วัดได้จะเป็นค่าต่อเนื่องในช่วง 0V .. +5V ดังนั้นจึงมองว่า เอาต์พุตของวงจรแบ่งแรงดันไฟฟ้าในลักษณะนี้ เป็นสัญญาณแบบแอนะล็อก

 


▷ ตัวอย่างอุปกรณ์ Variable Resistors ที่มีค่าความต้านทานเปลี่ยนแปลงได้#

ในการใช้งานซอฟต์แวร์ AUTODESK Tinkercad Circuits นอกจากตัวต้านทานคงที่ และ ตัวต้านทานปรับค่าได้ ยังมีตัวต้านทานประเภทอื่นที่มีค่าความต้านทานเปลี่ยนแปลงตามสภาพแวดล้อมให้เลือกใช้งานได้ เช่น

  • ตัวต้านทานไวแสง (LDR: Light-Dependent Resistor) หรือเรียกว่า Photocell ที่มีค่าความต้านทานเปลี่ยนแปลงตามความเข้มแสง (Illuminance: Lux) เช่น ทำจากวัสดุ CdS (Cadmium Sulfide) หรือ CdSe (Cadmium Selenide) ซึ่งตอบสนองได้ดีในช่วงความยาวคลื่นของแสงที่มองเห็นได้ด้วยตาเปล่า
  • เทอร์มิสเตอร์ (Thermistor) เป็นวัสดุที่มีค่าความต้านเปลี่ยนแปลงตามอุณหภูมิ โดยจำแนกออกเป็นสองประเภทหลักคือ เทอร์มิสเตอร์ที่มีค่าสัมประสิทธิ์อุณหภูมิเป็นบวก (Positive Temperature Coefficient: PTC) ซึ่งให้ค่าความต้านทานเพิ่มขึ้นเมื่ออุณหภูมิเพิ่มขึ้น และเทอร์มิสเตอร์ที่มีค่าสัมประสิทธิ์อุณหภูมิเป็นลบ ซึ่งให้ค่าความต้านทานลดลงเมื่ออุณหภูมิเพิ่มขึ้น (Negative Temperature Coefficient: NTC)
  • ตัวต้านทานที่เปลี่ยนค่าเมื่อได้รับแรงกด ซึ่งเป็นใช้เซนเซอร์ตรวจจับแรงกด (Resistive Force Sensor) เมื่อได้รับแรงกระทำ จะทำให้ค่าความต้านทานเปลี่ยนแปลงได้
  • ตัวต้านทานที่เปลี่ยนค่าเมื่อเกิดการโค้งงอ (Flexible Potentiometer) ซึ่งใช้เป็นเซนเซอร์ตรวจจับการโค้งงอ (Resistive Flex Sensor) เมื่อทำเกิดความโค้งงอ จะทำให้ค่าความต้านทานเปลี่ยนแปลงได้

รูป: ตัวต้านทานไวแสง หรือ LDR (แอลดีอาร์)

รูป: ตัวต้านทานที่เปลี่ยนค่าเมื่อเกิดการโค้งงอ

รูป: ตัวต้านทานที่เปลี่ยนค่าเมื่อได้รับแรงกด

โดยทั่วไปแล้ว ตัวต้านทานปรับค่าได้จะถูกนำไปใช้ร่วมกับตัวต้านทานคงที่และใช้งานเป็นวงจรแบ่งแรงดันไฟฟ้า

 


▷ การอ่านค่าจากวงจรแบ่งแรงดันด้วย Arduino Uno เพื่อปรับอัตราการกระพริบของ LED#

ถัดไปเป็นตัวอย่างการเขียนโค้ด Arduino Sketch และจำลองการทำงานด้วย Tinkercad Circuits วงจรนี้ประกอบด้วยตัวต้านทานปรับค่าได้ซึ่งมี 3 ขา ป้อนแรงดันไฟเลี้ยงที่ขา 1 และ 2 (ขาคู่ที่อยู่ด้านข้าง) ส่วนขาตรงกลาง (ตรงกับ Wiper หรือ Sliding Contact ที่อยู่ภายใน) ใช้เป็นขาเอาต์พุตของวงจร แรงดันไฟฟ้าที่ขากลางเทียบกับ GND ของวงจรนี้ จะถูกนำไปใช้เป็นสัญญาณอินพุต-แอนะล็อก ซึ่งมีค่าอยู่ในช่วง 0V .. +5V สำหรับบอร์ด Arduino Uno

รูป: การใช้งานวงจรแบ่งแรงดันไฟฟ้าร่วมกับบอร์ด Arduino Uno และตัวอย่างการเขียนโค้ด

สัญญาณอินพุตแบบแอนะล็อกถูกนำไปต่อเข้าที่ขา A0 ของบอร์ด Arduino Uno และสามารถอ่านค่าให้เป็นข้อมูลดิจิทัล (เป็นค่าตัวเลขจำนวนเต็ม) โดยใช้วงจร ADC (Analog-to-Digital Converter) ภายในชิปไมโครคอนโทรลเลอร์ของบอร์ด Uno

วงจรประเภทนี้ทำหน้าที่คอยแปลงระดับแรงดันที่ขาอินพุต ให้เป็นค่าตัวเลข ซึ่งในกรณีของบอร์ด Uno จะได้ค่าอยู่ในช่วง 0..1023 (ความละเอียดเท่ากับ 10 บิต) สำหรับแรงดันอินพุตในช่วง 0V .. +5V (ใช้สเกลแบบเชิงเส้นในการแปลงค่าตัวเลข)

คำสั่งของ Arduino API ที่จะต้องใช้กับสัญญาณอินพุต-แอนะล็อกคือ analogRead(...) โดยจะต้องระบุหมายเลขขาที่ใช้เป็นขาอินพุต-แอนะล็อก เช่น A0 ในตัวอย่างนี้

// Constant declaration
const int analogInputPin = A0; // The analog input pin to be used.

void setup() {
  // Set LED pin direction to output
  pinMode( LED_BUILTIN, OUTPUT );
}

void loop() {
  // Read the value from the sensor
  int value = analogRead( analogInputPin );
  // Map the value from 0..1023 to 100...1000 
  int delayMsec = map( value, 0, 1023, 100, 1000 );
  // Turn the LED on
  digitalWrite( LED_BUILTIN, HIGH );
  // Delay for some milliseconds
  delay( delayMsec );
  // turn the LED off
  digitalWrite( LED_BUILTIN, LOW );
  // Delay for some milliseconds
  delay( delayMsec );
}

ในโค้ดตัวอย่างมีการใช้คำสั่ง map(...) ของ Arduino API เพื่อแปลงค่าตัวเลขในช่วง 0..1023 โดยการสเกลค่าแบบเชิงเส้น ให้อยู่ในช่วง 100 ถึง 1000 แล้วนำไปใช้เป็นค่าในการหน่วงเวลาด้วยคำสั่ง delay(...) ดังนั้นการหมุนปรับค่าของตัวต้านทาน จะทำให้อัตราการกระพริบของ LED บนบอร์ด Uno เพิ่มขึ้นหรือลดลงได้

การเรียกใช้ฟังก์ชัน map(...)

map(value, fromLow, fromHigh, toLow, toHigh)

ให้ผลเหมือนกับการเขียนโค้ดต่อไปนี้

(value - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow

 


▷ การส่งข้อความออกทางพอร์ต Serial#

จากวงจรและโค้ดตัวอย่างที่แล้ว หากต้องการจะส่งค่าของตัวแปรในขณะที่โปรแกรมทำงาน โดยส่งเป็นข้อความออกทางพอร์ตอนุกรม Serial ไปยังคอมพิวเตอร์ของผู้ใช้ ก็สามารถใช้คำสั่งของ Arduino API เช่น

  • Serial.begin(...) ทำคำสั่งนี้เป็นการเริ่มต้นการทำงานของพอร์ต Serial และจะต้องระบุอัตราการรับส่งข้อมูล ซึ่งเรียกว่า Baudrate โดยทั่วไปก็ใช้ค่าคงที่ เช่น 9600 (ช้า) หรือ 115200 (เร็ว) เป็นต้น
  • Serial.print(...) ส่งค่าของตัวแปร หรือค่าคงที่ โดยแปลงเป็นข้อความไปยัง Serial ส่งข้อความแล้วไม่ต้องขึ้นบรรทัดใหม่
  • Serial.println(...) ส่งข้อความแล้วขึ้นบรรทัดใหม่
// Constant declaration
const int analogInputPin = A0; // Use Arduino A0 pin (analog input)

void setup() {
  // Initialize Serial and set the baudrate to 115200
  Serial.begin( 115200 );
  // Set LED pin direction to output
  pinMode( LED_BUILTIN, OUTPUT );
}

void loop() {
  // Read the value from the sensor
  int value = analogRead( analogInputPin );
  int delayMsec = map( value, 0, 1023, 100, 1000 );
  Serial.print( "A0:" );
  Serial.print( value );
  Serial.print( ", delay(msec):" );
  Serial.println( delayMsec );
  // Turn the LED on
  digitalWrite( LED_BUILTIN, HIGH );
  // Delay for some milliseconds
  delay( delayMsec );
  // turn the LED off
  digitalWrite( LED_BUILTIN, LOW );
  // Delay for some milliseconds
  delay( delayMsec );
}

รูป: ตัวอย่างการจำลองการทำงานของบอร์ด Uno แบบเสมือนจริง และมีการส่งข้อความออกทางพอร์ต Serial

 


▷ การอ่านค่าจากวงจรเซนเซอร์แสง LDR#

ตัวอย่างถัดไปสาธิตการต่อวงจรแบ่งแรงดันไฟฟ้าโดยใช้ตัวต้านทานไวแสง LDR และตัวต้านทานคงที่ เช่น 2.2k แรงดันไฟฟ้าจากวงจรดังกล่าวจะถูกนำไปใช้เป็นสัญญาณอินพุต-แอนะล็อกให้กับบอร์ด Uno โดยต่อเข้าที่ขา A0

รูป: ตัวอย่างผังวงจรแบ่งแรงดันไฟฟ้าที่ประกอบด้วย LDR และตัวต้านทานคงที่ และการวัดแรงดันตกคร่อมที่ตัวต้านทาน

ค่าของสัญญาณอินพุต-แอนะล็อกที่ได้จากการอ่านด้วยคำสั่ง analogRead(...) จะถูกเก็บไว้ในตัวแปร sensorValue แล้วนำไปเปรียบเทียบกับค่าคงที่ triggerValue ผลลัพธ์จากการเปรียบเทียบค่า จะถูกใช้เป็นเงื่อนไขของประโยคคำสั่ง if และกำหนดสถานะลอจิกของ LED ที่ขาดิจิทัลหมายเลข 5

ในตัวอย่างนี้ได้กำหนดเงื่อนไขไว้ว่า ถ้าความสว่างหรือความเข้มแสงเพิ่มขึ้น และทำให้แรงดันอินพุตเพิ่มขึ้นตาม จนมีค่ามากกว่า triggerValue จะทำให้ LED เปลี่ยนสถานะลอจิกจาก HIGH เป็น LOW ดังนั้นถ้าความเข้มแสงมากพอ จะทำให้ LED ดับลง แต่ถ้าน้อยกว่าค่าที่กำหนดไว้ จะทำให้ LED สว่าง

// Constant declarations
const int sensorInputPin = A0; // Analog input pin 
const int ledPin = 9;          // External LED pin
const int triggerValue = 700;  // Trigger value for comparison

void setup() {
  // Initialize Serial and set the baudrate to 115200
  Serial.begin( 115200 ); 
  // Set LED pin direction to output
  pinMode( ledPin, OUTPUT );
}

void loop() {
  // Read the analog input
  int sensorValue = analogRead( sensorInputPin );
  // Compare the current analog input value with
  // the trigger value and update the LED output
  if (sensorValue > triggerValue) {
    digitalWrite( ledPin, LOW );  // Turn off the LED
  } else {
    digitalWrite( ledPin, HIGH ); // Turn on the LED
  }
  // Send the analog sensor value as a string to Serial
  Serial.println( sensorValue );
  delay(50);
}

รูป: ตัวอย่างการจำลองการทำงานของบอร์ด Uno แบบเสมือนจริง สำหรับวงจรเซนเซอร์ LDR(มีการปรับความเข้มแสง)

ค่าของ triggerValue เป็นค่าคงที่ แต่ถ้าต้องการให้ปรับระดับได้จากภายนอก ก็สามารถใช้วงจรแบ่งแรงดันไฟฟ้า และสร้างจากตัวต้านทานปรับค่าได้ และอ่านค่าด้วยขาแอนะล็อก-อินพุตอีกขาหนึ่ง เช่น A0 แล้วนำค่าไปใช้ในการเปรียบเทียบ ตัวอย่างการเขียนโค้ด มีดังนี้

// Constant declaration
const int sensorInputPin  = A0;
const int triggerInputPin = A1;
const int ledPin = 9; 

void setup() {
  Serial.begin( 115200 );
  pinMode( ledPin, OUTPUT );
}

void loop() {
  int sensorValue  = analogRead( sensorInputPin );
  int triggerValue = analogRead( triggerInputPin );
  // Check the condition for turning off/on the LED
  if (sensorValue > triggerValue) {
    digitalWrite( ledPin, LOW );  // Turn off the LED
  } else {
    digitalWrite( ledPin, HIGH ); // Turn on the LED
  }
  // Send the analog value as a string to Serial
  Serial.println( sensorValue );
  delay(50);
}

รูป: ตัวอย่างการจำลองการทำงานของบอร์ด Uno แบบเสมือนจริง สำหรับวงจรเซนเซอร์ LDR (มีการปรับความเข้มแสง)

 

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

แนะนำให้มีการใช้ค่าคงที่สำหรับการเปรียบเทียบสอง 2 ระดับ คือ ค่าระดับบน (upperValue) และค่าระดับล่าง (lowerValue) และมีการเปรียบเทียบกับค่าล่าสุด (currentValue) กับค่าที่อ่านได้ในครั้งที่แล้ว (previousValue) เพื่อให้ทราบทิศทางการเปลี่ยนแปลง (เพิ่มขึ้นหรือลดลง)

  • ถ้าแรงดันอินพุตที่วัดได้เพิ่มขึ้นและสูงกว่าค่าระดับบน ให้ผลลัพธ์เป็น "ความเข้มแสงมาก" แล้วปิด LED
  • ถ้าแรงดันอินพุตเริ่มลดลงจนต่ำกว่าค่าระดับล่าง ให้ผลลัพธ์เป็น "ความเข้มแสงน้อย" แล้วเปิด LED

การตรวจสอบเงื่อนไขสำหรับการปิด LED:

  if ( (currentValue > previousValue) 
    && (currentValue > upperValue) ) {
    digitalWrite(ledPin, LOW); // Turn off LED
  } 

คำอธิบายโค้ด

  • มีการใช้ประโยคคำสั่ง if ตรวจสอบเงื่อนไขเพื่อทำให้ LED ดับลง (OFF)
  • มีการเปรียบเทียบค่า (currentValue > previousValue) ถ้าให้ผลเป็นจริง ค่าใหม่มีค่ามากกว่าค่าครั้งก่อน หมายถึง มีการเปลี่ยนแปลงค่าเพิ่มขึ้น
  • มีการเปรียบเทียบค่า (currentValue > upperValue) ถ้าให้ผลเป็นจริง ค่าใหม่มีค่ามากกว่าค่าระดับบนแล้ว
  • && หมายถึง โอเปอร์เรเตอร์ Logical AND ดังนั้นถ้าทั้งสองเงื่อนไขเป็นจริง จะทำให้ LED ดับลง

การตรวจสอบเงื่อนไขสำหรับการเปิด LED:

  if ( (currentValue < previousValue) 
    && (currentValue < lowerValue) ) {
    digitalWrite(ledPin, HIGH);
  }

คำอธิบายโค้ด

  • มีการใช้ประโยคคำสั่ง if ตรวจสอบเงื่อนไขเพื่อทำให้ LED สว่าง (ON)
  • มีการเปรียบเทียบค่า (currentValue < previousValue) ถ้าให้ผลเป็นจริง ค่าใหม่มีค่าน้อยกว่าค่าครั้งก่อน หมายถึง มีการเปลี่ยนแปลงค่าลดลง
  • มีการเปรียบเทียบค่า (currentValue < lowerValue) ถ้าให้ผลเป็นจริง ค่าใหม่มีค่าน้อยกว่าค่าระดับล่างแล้ว
  • && หมายถึง โอเปอร์เรเตอร์ Logical AND ดังนั้นถ้าทั้งสองเงื่อนไขเป็นจริง จะทำให้ LED สว่าง

ตัวอย่างโค้ดโดยสมบรูณ์:

// Constant declaration
const int analogInputPin = A0; 
const int ledPin = 9; 
const int lowerValue = 500;
const int upperValue = 700;

// Global variable declaration
int previousValue;

void setup() {
  Serial.begin( 115200 );
  pinMode( ledPin, OUTPUT );
  previousValue = analogRead( analogInputPin );
  delay(100);
}

void loop() {
  // Read the analog input
  int currentValue = analogRead( analogInputPin );
  // Check the condition for turning off the LED
  if ( (currentValue > previousValue) 
    && (currentValue > upperValue) ) {
    digitalWrite(ledPin, LOW); // Turn off the LED
  } 
  // Check the condition for turning on the LED
  if ( (currentValue < previousValue) 
    && (currentValue < lowerValue) ) {
    digitalWrite(ledPin, HIGH); // Turn on the LED
  }
  // Save the current value as previous value
  previousValue = currentValue;
  // Send the analog value as a string to Serial
  Serial.println( currentValue );
  delay(50);
}

รูป: ตัวอย่างการจำลองการทำงานของบอร์ด Uno แบบเสมือนจริง สำหรับวงจรเซนเซอร์ LDR (มีการปรับความเข้มแสง)

 


▷ การต่อวงจร "วิทสโตนบริดจ์" (Wheatstone Bridge)#

วงจร "วิทสโตนบริดจ์" เป็นวงจรไฟฟ้าที่ประกอบด้วยแหล่งจ่ายกระแสตรง และตัวต้านทาน 4 ตัว (, .., ) ตามรูปวงจรต่อไปนี้ วงจรแบ่งได้เป็น 2 ส่วน คือ วงจรแบ่งแรงดันไฟฟ้าจำนวน 2 ชุด (ตัวต้านทาน อนุกรมกับ และ ตัวต้านทาน อนุกรมกับ ตามลำดับ)

  • ตัวต้านทาน และ มีค่าคงที่ (Fixed Resistor)
  • ตัวต้านทานหนึ่งตัวปรับค่าได้คือ (Variable Resistor)
  • ตัวต้านทาน (ใช้ชื่อเป็น ) เป็นตัวต้านทานที่ไม่ทราบค่า (Unknown Value Resistor) เช่น ตัวต้านทานไวแสง (LDR) ตัวต้านทานเปลี่ยนแปลงค่าตามอุณหภูมิ หรือ เทอร์มิสเตอร์ (Thermistor) เป็นต้น

ข้อสังเกต: บางกรณี ก็ให้ เป็นตัวต้านทานปรับค่าได้ และตัวต้านทาน มีค่าคงที่

ของวงจรแบ่งแรงดันไฟฟ้าทางซ้ายมือ คำนวณได้ดังนี้

ของวงจรแบ่งแรงดันไฟฟ้าทางขวา คำนวณได้ดังนี้

ดังนั้นผลต่างของแรงดันไฟฟ้าที่จุด A และ B หรือ ในวงจร จะเท่ากับ

และหาค่าของ ได้ดังนี้

จะเป็นศูนย์หรือไม่ ขึ้นอยู่กับว่า วงจรอยู่ในสภาวะสมดุล (Balanced) หรือไม่ การปรับค่า สามารถทำให้วงจรเข้าสู่สภาวะสมดุลได้

ในสภาวะสมดุล ถ้าแรงดันไฟฟ้าระหว่างจุด A และ B จะได้เป็นศูนย์ นอกจากนั้นแล้ว ยังสามารถเขียนความสัมพันธ์ระหว่างตัวต้านทานดังนี้

ดังนั้นเมื่อทราบค่าความต้านทานของ , และ ก็สามารถคำนวณค่าของ ได้

หากมีการเปลี่ยนแปลงของความต้านทาน ซึ่งทำให้เกิดผลต่างของแรงดันไฟฟ้า และถ้าอยู่ในระดับมิลลิโวลต์ ก็นิยมใช้ไอซี OpAmp นำมาต่อวงจรในลักษณะที่เรียกว่า Diferential Amplifier เพื่อขยายผลต่างของแรงดันระหว่างจุด A และ B ก่อนจะนำสัญญาณเอาต์พุตที่ได้ ไปต่อเข้ากับขาอินพุต-แอนะล็อกของบอร์ดไมโครคอนโทรลเลอร์ (และแรงดันไฟฟ้าจะต้องอยู่ในช่วง 0V..VREF ของไมโครคอนโทรลเลอร์) เพื่ออ่านค่าแรงดันไฟฟ้าดังกล่าว

 


กล่าวสรุป#

บทความนี้นำเสนอการทดลองวงจรที่มีการใช้งานตัวต้านทานปรับค่าได้ โดยสร้างเป็นวงจรแบ่งแรงดันไฟฟ้า และใช้งานร่วมกับบอร์ด Arduino Uno วงจรและโค้ดสามารถจำลองการทำงานได้เสมือนจริงโดยใช้ซอฟต์แวร์ AUTODESK Tinkercad Circuits

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2023-12-16 | Last Updated: 2023-12-19