ผมได้ชมคลิป ตัวนี้ครับ
การใช้พัดลมให้ได้เหมือนแอร์
http://www.youtube.com/watch?v=5dsa_tfjR5I
เลยเอามาทดลองใช้งานในห้องดูซะเลย งานนี้ ใช้ Arduino + DS18B20 + C#
(http://www.ogalik.ee/pics/DS18B20_parasite_mode.png)
(http://b.lnwfile.com/kl0x7m.jpg)
(http://image.ohozaa.com/i/e5e/ftS9LQ.jpg) (http://image.ohozaa.com/view2/xccdUa0X2UaPojE6)
(http://image.ohozaa.com/i/5af/siMI3h.jpg) (http://image.ohozaa.com/view2/xcce0xDe9tBdethC)
(http://image.ohozaa.com/i/e61/tMIxHd.jpg) (http://image.ohozaa.com/view2/xcceQiwNy6LTxnEB)
จากการทดลอง ประมาณ 20 นาที (1200 วินาที)
(http://image.ohozaa.com/i/07f/ms3BRo.png) (http://image.ohozaa.com/view2/xccdfoswr2hg7t8D)
8)
อุณหภูมิลดลงประมาณเกือบๆ 1 องศา ช่วงทดลองประมาณ บ่าย 3 - 4 โมง
ดูเหมือนลดลงไม่มาก แต่ที่จับจากความรู้สึกของตัวเอง รู้สึกมันเย็นสบายขึ้น พอสมควรครับ
อาจจะเป็นเพราะอากาศมีการถ่ายเทมากขึ้น เราเลยหายใจได้สะดวกขึ้น
โดยเฉพาะตรงใกล้ๆ หน้าต่าง จะรู้สึกเลยว่ามีลมเย็นเข้ามา...
การทดลองนี้ยังไม่สมบูรณ์เท่าไร จริงๆ ควรต้องมี DS18B20 อีกตัวหนึ่งไว้วัดอุณหภมิ
ภายนอกห้องด้วย พอดีผมมีแค่ตัวเดี่ยว เอาไว้รอซื้อมาอีกตัวจะมา Update ให้นะครับ
:-*
สำหรับ Arduino ผมใช้ lib ที่ชื่อว่า DallasTemperature โปรแกรมเลยออกมาสั้นนิดเดียว
(ใช้ lib ก็ดีครับ ง่ายดี แต่ทำให้เราโง่ลงนี้สิ เหอะๆๆ)
Arduino Code
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(0));
}
C# Code
public partial class Form1 : Form
{
string RxString;
uint rxCounter;
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM3";
serialPort1.BaudRate = 9600;
try { serialPort1.Open(); }
catch (Exception ex) { MessageBox.Show(ex.Message); }
if (serialPort1.IsOpen)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
textBox1.ReadOnly = false;
}
}
private void buttonStop_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
buttonStart.Enabled = true;
buttonStop.Enabled = false;
textBox1.ReadOnly = true;
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
if (serialPort1.IsOpen) serialPort1.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.Text = RxString;
chart1.ChartAreas[0].AxisY.Minimum = 25;
chart1.ChartAreas[0].AxisY.Maximum = 37;
chart1.ChartAreas[0].AxisY.Interval = 1;
chart1.ChartAreas[0].AxisX.Interval = 60;
chart1.ChartAreas[0].AxisX.Minimum = 0;
chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
chart1.ChartAreas[0].AxisY.Title = "C";
chart1.ChartAreas[0].AxisX.Title = "Time";
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray;
chart1.Series[0].Color = Color.Red;
chart1.Series[0].Points.AddXY(rxCounter, RxString);
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
RxString = serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
(http://www.ogalik.ee/pics/DS18B20_parasite_mode.png)
จากรูป เจ้า DS18B20 เราต้องต่อ ตัวต้านทาน 4.7 k โอม
ถ้าตัวต้านทาน ที่เอามาต่อ มีค่ามากกว่า หรือน้อย กว่า 4.7k โอม
จะมีผลต่ออุณหภมิที่ DS18B20 วัดได้หรือเปล่าครับ
:)
ขอบคุณครับ
เก็บก่อน ครับ :o
Quote from: sodanum on November 06, 2013, 05:24:50 PM
(http://www.ogalik.ee/pics/DS18B20_parasite_mode.png)
จากรูป เจ้า DS18B20 เราต้องต่อ ตัวต้านทาน 4.7 k โอม
ถ้าตัวต้านทาน ที่เอามาต่อ มีค่ามากกว่า หรือน้อย กว่า 4.7k โอม
จะมีผลต่ออุณหภมิที่ DS18B20 วัดได้หรือเปล่าครับ
:)
ขอบคุณครับ
ผมว่า ไม่น่าจะมีผลกับค่าอุณหภูมินะครับ เพราะเราอ่านข้อมูล 1 wire แบบ Digital อยู่แล้วครับ
ค่ามากกว่า 4.7K - R 10K น่าจะใช้งานได้ดีนะครับ
แต่ถ้าน้อยกว่า 4.7K มากๆ อาจจะมีผลส่ง GND Logic อาจจะดึงลง GND ไม่ได้ก็เป็นได้ครับ
แต่เป็นที่ค่า R เท่าไหร่ก็ไม่รู้เหมือนกันครับ อิ อิ
ตอนผมทดลองครั้งแรกจับ R มาใส่ มั่วๆ บางครั้ง พอจับที่ตัวถังเหล็กที่ครอบอยู่ อุณหภมิ
มันจะอ่านได้ -120 องศา พอดีผม ไม่มี R 4.7 โอม มีแต่มากกว่า กับ น้อยกว่า เลยใส่ทดลองไปก่อน
แต่ถ้าเทียบกับเครื่องสำเร็จรูป อุณหภูมิ ของผม มันจะสูงกว่า ประมาณเกือบ 1 องศา เลยสงสัย
ว่า R ที่ใส่มันจะมีผล ซะอีก ขอบคุณครับสำหรับข้อมูลครับ ..... ;D
ว่าแต่ ไม่รู้ว่า arduino หรือ เครื่องสำเร็จ อันไหนแม่นกว่ากัน... เหอะๆๆ
(http://www.rcland.net/content/image/product-20130202-032124-4.jpg)
สงสัยต้องลองบ้างแร้ว หลักการนี้ น่าสนใจมากๆ
Quote from: sodanum on November 06, 2013, 05:24:50 PM
(http://www.ogalik.ee/pics/DS18B20_parasite_mode.png)
จากรูป เจ้า DS18B20 เราต้องต่อ ตัวต้านทาน 4.7 k โอม
ถ้าตัวต้านทาน ที่เอามาต่อ มีค่ามากกว่า หรือน้อย กว่า 4.7k โอม
จะมีผลต่ออุณหภมิที่ DS18B20 วัดได้หรือเปล่าครับ
:)
ขอบคุณครับ
ไม่มีผลครับ มันเป็นเพียง R pull up เท่านั้นครับ แต่่มากๆ ก็จะทำให้กระแสไม่พอจ่่าย ปกติใช้ ไม่เกิน 47k ครับ
Quote from: sodanum on November 06, 2013, 05:24:50 PM
(http://www.ogalik.ee/pics/DS18B20_parasite_mode.png)
จากรูป เจ้า DS18B20 เราต้องต่อ ตัวต้านทาน 4.7 k โอม
ถ้าตัวต้านทาน ที่เอามาต่อ มีค่ามากกว่า หรือน้อย กว่า 4.7k โอม
จะมีผลต่ออุณหภมิที่ DS18B20 วัดได้หรือเปล่าครับ
:)
ขอบคุณครับ
ขอให้ดู Datasheet ครับ
(http://upic.me/i/pw/pic-1.png) (http://upic.me/show/48343927)
(http://upic.me/i/m9/pic-2.png) (http://upic.me/show/48343995)
การต่อแบบนี้เป็นแบบ Parasite Power ยังใช้พลังงานในช่วงการ อ่านอุณหภูมิ (และทำงานกับ eeprom ) อยู่ที่ประมาณ 1 ถึง 1.5 mA. ดังนั้นหาก ใช้ R ค่ามากไป ก็อาจทำให้ แรงดันตกลงไปต่ำจน IC ทำงานผิดปกติได้ หาก น้อยเกินไป ก็จะขับไม่ไหว ( Datasheet ว่า Sink Current ได้ 4 mA ที่ Vi/o เท่ากับ 0.4 V )
จาก Datasheet นี้ ค่า R ที่ใช้กับแรงดัน 5V ก็ไม่ควรต่ำกว่า 1K2 และ R น่าจะไม่ควรเกิน 5 K มากนัก ( R มากใช้เวลาในการ Charge พลังงานที่ Cpp นาน) จะทำให้พลังงานใน Cpp ของ IC อาจไม่พอใช้ในการทำงานในแต่ละ Timing ของสํญญาณ 1 Wire นี้
หากใช้กับแรงดัน 3 V ก็ต้องระวังมากขึ้นครับ (พลังงานใน Cpp น่าจะหมดลงเร็วกว่า)
และกรณี นำไปวัดเกินกว่า +100 องศา ก็ไม่ควรต่อใช้ในแบบ Parasite Power ด้วยครับ
ทำตามแล้ว OK ครับ(เฉพาะส่วนของ Arduino) ผมใช้ 1 ตัว แต่เดี๋ยวว่าจะลองสัก 3 ตัวครับ ตอนนี้มีแค่ตัวเดียว
;D เหอะๆ ตอนแรกผมก็จับ R ใส่มั่วๆ เลย
ได้รับความรู้อีกแล้ว :)
ตอนแรกผมใช้ R 5k สำหรับโพรบตัวเดียวเวิร์คครับ พอมากกว่า 1 เท่านั้นแหละต้องปรับลงมาที่ 4.7k
ใช้โค้ด Multiple DS18B20 Example: จากเวบนี้ครับ http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20
โดยหาแอดเดรสของแต่ละโพรบจากเวบนี้ครับ http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
อีกรูปครับเป็นผลการอ่านอุณหภูมิ ดูเหมือนว่า sensitivity ของแต่ละตัวจะไม่เท่ากันครับ
ต่างกันเยอะเกิน 1 องศาอีกนะครับ แล้วแบบนี้ อันไหน เป็นค่าที่ถูกต้องกันแน่
หรือว่าต้องใช้ Senser เบอร์อื่น ที่ราคาแพงกว่านี้...
ท่าน MAbUS มีเทอร์โมมิเตอร์ แบบแก้วไหมครับ ถ้ามีทดสอบเปรียบเทียม มาให้ชมหน่อยนะครับ
มันต้องรอเวลาครับถึงจะใกล้เคียงกัน ความไวมันต่างกันด้วย บังเอิญผมซื้อมา 2 ครั้ง ครั้งแรกสายสี แดง ดำ เหลือง ความไวจะดีกว่าสายสี แดง เขียว เหลือง ครับ พรุ่งนั้ว่าจะลองเทียบกับอ่างคุมอุณหภูมิดูครับ
ภาพนี้เป็นอุณหภูมิห้อง ผมไล่จุดไฟทีละตัว 1-5 ครับ
รูปนี้ผมเทียบกับ PT100+อ่างควบคุมอุณหภูมิ ครับ
เครื่องวัดได้ 34.12 ส่วน Arduino วันได้ ประมาณ 40 ผมเข้าใจถูกเปล่าครับ
ถ้าใช่ ทำไมมันต่างกันเยอะจังครับ..
ขอโทษครับท่านโซดาที่ทำให้เข้าใจผิด ตัวอ่านอุณหภูมิอ่างมันเพี้ยนๆอ่ะครับแต่มันนิ่งนะครับ ผมเลยอ้างอิงกับตัว PT100 มาตรฐาน
จริงแล้วมันตรงกันครับ(PT100 มาตรฐาน,DS1820)ที่ 40.3 องศาเซลเซียส เพียงแต่ว่า sensitivity ของ DS1820 แต่ละตัวไม่เท่ากันนะครับ
ถ้าระบบเปลี่ยนแปลงไวจะเห็นความต่างเลยครับ
Quoteดูเหมือนลดลงไม่มาก แต่ที่จับจากความรู้สึกของตัวเอง รู้สึกมันเย็นสบายขึ้น พอสมควรครับ
อาจจะเป็นเพราะอากาศมีการถ่ายเทมากขึ้น เราเลยหายใจได้สะดวกขึ้น
โดยเฉพาะตรงใกล้ๆ หน้าต่าง จะรู้สึกเลยว่ามีลมเย็นเข้ามา...
ที่รู้สึกเช่นนั้นก็ถูกต้องแล้ว ว่าพอมีลมพัด( พัดลมที่ตั้ง thermostat control ใว้ ) ทำให้รู้สึกสบาย แม้ว่า อากาศรอบตัวจะลดลงไปแค่ 1 องศา
คำอธิบายเรื่องนี้ เป็นเรื่องที่เขาเรียกว่า Wind chill ( factor )
http://en.wikipedia.org/wiki/Wind_chill
มันเป็นปรากฎการทาง physiology ( สรีรวิทยา- ศาสตร์ที่เกี่ยวกับการทำงาน การตอบสนองของร่างกาย
วิชานี้เป็นวิชาพื้นฐานที่เขาสอนใน รร แพทย์ หรือพวกสายวิทย์ชีว..)
ใน ตปท เวลาเขาประกาศอุณหภูมิประจำวัน เขาจะบอกว่า แต่ละวันอากาศอุณหภูมิเท่าไร และ ร่างกายจะรู้สึกเท่าไร
เจ้าตัวหลังนี่แหละ ที่คือความรู้สึกของร่างกายอันเนื่องมาจากแรงลมพัด ที่เขาเรียก wind chill factor
เขาจะมีตารางให้เปรียบเที่ยบดูว่า ความเร็วลมเท่าไร จะทำให้เรารู้สึกว่า "ร่างกายเรารู้สึกเย็นเท่าไร"
พื้นฐานของมันมาจากความจริงว่า ( สรีรวิทยา ) ร่างกายจะเสียความร้อนโดย
๑ การแผ่รังสีความร้อนออกไป( Radiation)
๒ โดยการพาความร้อนออกไป ( convection )
๓ โดยการระเหย ( Evaporation )
๔ โดยการนำออกไป ( Conduction )
นอกจากนี้ อัตราการเสียความร้อนของร่างกายออกโดยการพาออกไป (convection ) ไปยังขึ้นกับความเร็วลมที่พัดผ่านตัวเรา
ร่างกายตัวเรามีอุณหภูมิราวๆ 38 C รอบตัวเราอย่างบ้านเรา ร้อนคิดว่า ราว 30+ ดังนั้นจะมีแถบขั้นระหว่างอุณหภูมิรอบตัวเรากับอากาศรอบๆกั้นรอบๆอยู่ หากเราทำลายแถบอุณหภูมิระหว่างตัวเรากับอุณหภูมิรอบตัวเสีย เป็นการเปิดโอกาศให้ลมที่เย็นกว่าร่างกายเข้ามาใหม่ ก็จะมีการถ่ายเทเอาลมเย็นใหม่เข้ามาปะทะ( ประกบ ) กับร่างกาย ยิ่งลมยิ่งแรงหรือเร็ว อุณหภูมิรอบผิวตัวเรา ก็จะเย็นเร็วขึ้นด้วย
ดังนั้นจากคำอธิบายข้างบน หากตัวเราเปียก ไปโดนลมเข้า ก็จะรู้สึกเย็นสบายขึ้น
หวังว่าคำอธิบายคงจะเข้ากับที่เขียนมาว่า รู้สึกสบายขึ้น แม้อุณหภูมิจะลดลงไปแค่ 1 องศา
ก็ด้วยคำอธิบายข้างบน แปลว่า แม้ Electronics จะทำงานลดได้แค่ 1 องศา....
แต่.... ร่างกายเรามันทำงานให้เราได้ดีกว่า electronics ( เฉพาะในกรณีที่ จขกท เล่ามาเท่านั้น)
เพราะหากร้อนมาก เราก็คงต้องวิ่งเข้าหาห้องแอร์( พึ่ง electronics ) เพราะลมมันลดอุณหภูมิร่างกายไม่พอในหน้าร้อนจัดๆ
หวังว่าข้อมูลพอจะทำให้เข้าใจดีขึ้นและมีประโยชน์บ้าง
ปล ความรู้เพิ่มอีกนิด ก็คือว่า ปรากฎการณ์ อันนี ในสารหรือวัตถุที่มีชีวิต กับไม่มีชีวิต จะตอบสนองต่างกันกล่าวคือ
ในสิ่งไม่มีชีวิต ไม่ว่าจะลมจะพัดแรงแค่ใหน อุณหภูมิของมันจะไม่ต่ำกว่าอุณหภูมิสิ่งแวดล้อม
แต่....... ในสิ่งมีชีวิต ร่างกายจะตอบสนองต่างออกไป จะมีการปรับของร่างกายตามระบบสรีรวิทยาของร่างกาย
ยกตัวอย่าง ร่างกายจะปรับเพื่อให้อยู่รอด จนในบางกรณีจะทำให้นิ้วมือนิ้วเท้า เน่าไปเลย ( frostbite ) หรือ
จนร่างกายเย็นลงต่ำกว่าอุณหภูมิรอบตัว ( hypothermia )
อ่านแล้วได้ความรู้เพิ่มขึ้นมากมาย สะสมไว้ก่อนครับ