Graph_realtime_1

จากคำถาม "... โมดูลวัดโวลต์ AC 220v เข้า Arduino แล้วนำค่าที่ได้มา plot เป็นกราฟ sine ใน processing ครับโดยค่าที่วัดได้เป็นแบบ real time.."

1. คำว่าแบบ Real time นี้เราต้องพิจารณาว่า ความเร็วสัญญาณเท่าไร

1) ในที่นี้เป็น AC Line ที่มีความถี่ 50 Hz

2) ถ้า Sampling สัญญาณ สัก 10 จุดใน 1 ไซเคิล แสดงว่าความถี่ในการวัดคือ 500 Hz คือต้องแปลง 500 ครั้ง ต่อ วินาที ค่าขนาดนี้ Arduino

3) ถ้าใช้วงจรแปลงค่า analog เป็น Digital ของ Arduino ทำการแปลง โดยใช้ความละเอียด (Resolution) เป็น 10 บิต นั่นหมายถึงสัญญาณ AC 1 ค่า แปลงเป็นค่า Digital ได้ 10 บิต

4) การสื่อสารระหว่าง Arduino กับ Processing บน PC ใช้พอร์ท อนุกรม แบบ UART สะดวกที่สุดแต่การส่งจะส่งได้ครั้งละ 8 บิต ดังนั้นถ้าจะส่ง 10 บิต Arduinoต้อง ส่ง 2 ครั้ง แต่ละครั้งมีการเพิ่มบิตหัวท้ายอีก 2 บิต สรุปแล้วสัญญาณ 1 ค่า จะส่ง 2 ครั้ง 20 บิต

5) จากข้อ 2) แสดงว่าต้องส่งวินาทีละ 500 ค่า จาก 4) ค่าละ 20 บิต ดังนั้นความเร็วในการส่งต่ำสุดคือ 500x20 = 10000 บิต ต่อวินาที การรับส่งข้อมูลแบบ UART (Baud rate) ของ Arduin ทำได้ที่ 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, or 115200 บิตต่อวินาที ดังนั้นต้องเลือกเอาที่มากกว่า 10000 บิต/วินาที