Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - RoLRoR

#2
หลักการแบบง่าย non-isolate และ isolate ครับ
http://microcontrollerslab.com/ac-voltage-measurement-using-microcontroller/

ตามวงจรที่มี rectifier เลือกใช้ diode ชนิดที่โวลท์ drop น้อยช่วยค่าตรงขึ้น
และ เขียนโปรแกรมอ่านค่าแบบ rms จะอ่านค่าได้ทั้ง ac และ dc ครับ.
#3
คุณ MAbUS ผมเองก็ศึกษาจากตัวอย่างวงจรและโค้ดที่พี่ๆ หลายท่านได้ลงไว้เหมือนกันครับ  :D
#4
serial baudrate : 9600 bit per second
serial mode : startbit=1, data=8bit, parity=none, stopbit=1 == 10bit per charactor
มากสุด 9600 / 10bit = 960 charactor per second"

:D ประมาณนี้เปล่าครับ

แต่ละค่า ถ้าพิมพ์หลักเดียวก็ใช้ 1 charactor , เลข 4 หลัก ก็ 4 charactor
ต้องลองไปคำนวณหาสมการต่อดูครับ.
0-9             10*1
10-99           90*2
100-999         900*3
1000-9999       9000*4
#5

credit : https://en.wikipedia.org/wiki/Zero_crossing
จุดตัดศูนย์ครับ (ศูนย์โวลท์)


credit : https://electronics.stackexchange.com/questions/35685/digital-dimmer-with-microcontroller

ส่วนใหญ่ใช้เพื่อควบคุมพลังงาน output โดย วิธี shift phase คือ dimmer แบบหนึ่ง
เมื่อใช้ mcu ตรวจจับจุด zerocrossing ได้แล้ว ก็จะนับเวลา เพื่อ ส่งสัญญาณ trig  triac ,igbt ได้ถูกจังหวะครับ


credit : http://www.pcbheaven.com/wikipages/Dimmer_Theory/

หน่วงเวลาน้อย output มาก , หน่วงเวลามาก output น้อย

... นำไปใช้รูปแบบอื่นได้ครับ เช่นรู้จุด zero crossing ก็ วัดความถี่ ไฟ ac
หรือ จะวิเคราะรูปคลื่น หา powerfactor ,paramiter
หรือ modulate / demodulate ข้อมูล เช่น ac line communication ได้ ถูกจังหวะครับ
#6
ผมเคยใช้แค่ ปรับระดับแรงดัน ac. ให้อยู่ช่วงที่ arduino อ่านได้ แล้ว sampling ค่าเอาครับ.

เคยอ่านผ่าน เซมิฯ เหมือนจะมีโครงงาน RMS to DC โดยใช้ AD737 (ที่ es มีขาย)
มีลิ้งนี้ ใช้ OPAMP และหรือใช้ AD737 ครับ
http://sound.whsites.net/appnotes/an012.htm
http://sound.whsites.net/project140.htm
#7

ยกระดับแรงดัน ac. ให้มาอยู่ภานใน dc. ช่วงที่ arduino อ่านได้ (0-5v ref.2.5v) (0-3.3v ref.1.67v)


และการต่อวงจรครับ.
#8
ผมใช้วิธี...
1. isolate หม้อแปลงลดแรงดันลงก่อนครับ 220/2.5 ถ้าหม้อแปลงแรงดันมากไป ต่อ VR. เอา
2. ยกระดับแรงดันขึ้นให้โดยต่อหม้อแปลง sec. เข้าที่ Ref. 2.5V (ใช้ R แบ่งแรงดัน + C รักษาแรงดัน) อีกเส้นต่อเข้า analog-in ของ arduino
3. adc sampling ตลอด cycle. 2ms.
ถ้า arduino adc 10bit (ความละเอียด 0-1023) ค่าที่ได้ > 511 เก็บค่า โดย adc_value-511
ค่าที่ได้ <= 511 เก็บค่า โดย 511-adc_value แล้วเอาค่าที่ได้ตลอด 2ms. เข้าสมการ rms. และคูณปรับ จะได้ค่าเป็น Rms Volt.

อีกวิธี
1. isolate หม้อแปลงลดแรงดันเป็นลง
2. rectifier เป็น DC ใส่ C Filter , R Load
3. ต่อเข้า gnd และ analog in แล้ว arduino อ่านค่า adc
ใส่ตัวคูณเพื่อแสดงเป็น Volt ตามต้องการ