ช่วยทีคับจะต่อใช้งาน Current Sensor ACS-712 20A ยังไงอะคับ

  • 6 Replies
  • 4198 Views
ใครพอ มีลิ้งแนะนำ บ้างคับ พอดี ผม ลองไป ต่อ ใช้ งาน บอร์ด ATmega1280 อะคับ ผม เอา ขา Vccของ ACS-712 ต่อ 5v ขา Gnd ของ ACS712ต่อ

Gnd ของบอร์ด แล้วเอา ขา Vout ของ ACS-712 ต่อ กับ พอร์ด Analog 1 แล้วแสดง ค่า analogRead ของ พอร์ต A1 แล้วค่ามัน ได้ 512 - 511 ประมาณนั้นอะคับ เวลา ลองใช้เตารีด เสียบวัดกระแสดู ค่าก้อเท่าเดิม ขึ้นๆ ลงๆ

รูปอุปกรณ์ ผมอัฟให้ดูแล้วน่ะคับ

ลองขยายก่อนเข้า adc ครับ

ลองขยายก่อนเข้า adc ครับ


จะลอง ดูน่ะคับ ถ้า ต่อ ตามนี้ แล้ว ค่า ที่ออกมาจาก Vout จะเป็นค่าอะไรหรอคับ

*

Offline Neo

  • **
  • 48
    • View Profile
    • xcitemicro
ตอนไม่มีกระแสไหล Vo = 2.5V  อยู่แล้วครับ   พอมีกระแสไหลสัญญาณมันจะเป็น Sine ครับ 50 hz
จะอ่านต้อง Sampling ที่ 1 ms  จำนวน 20 ครั้ง (20 ms = 50hz)อย่างเดียวครับ   แล้วเข้าสมการ IRms ถึงจะได้

ตอนไม่มีกระแสไหล Vo = 2.5V  อยู่แล้วครับ   พอมีกระแสไหลสัญญาณมันจะเป็น Sine ครับ 50 hz
จะอ่านต้อง Sampling ที่ 1 ms  จำนวน 20 ครั้ง (20 ms = 50hz)อย่างเดียวครับ   แล้วเข้าสมการ IRms ถึงจะได้

ผมลอง อ่านค่า 20 ครั้ง แล้วใส่ Delay(1) ได้จิงๆ ด้วยอะคับ เวลาเสียบ หัวแร้ง ค่า เปลี่ยนจาก ปกติมัน จะ 512 แต่ตอนเสียบมัน จะเปลี่ยนตัวเลข เป็น 510-508 ประมาณนี้อะคับ แล้วสมดาร IRms เป็นไงหรอคับ

*

Offline JMew

  • ***
  • 180
  • เจ๊มารอค่ะ
    • View Profile
RMS สร้างอาร์เรย์ ๑ มิติ บวกยกกำลังสองสะสม หารด้วย จำนวนทั้งหมด แล้วถอดรากที่สอง

Dim Isamp As word
Dim Isamp2 As Long
Dim SumI2 as Single

Dim Icount as Byte


DeclareFunction Irms() As Single

Function Irms () As Single

Isum2 = 0

For Icount = 1 to 20

Isamp = GetADC(1)
Isamp = 512 - Isamp 'ลบออกจาก 2.5 V
Isamp2 = Isamp ^ 2 'ยกกำลังสอง
Isum2 = Isum2 + Isamp2 'บวกสะสม

Waitms 1
Next

Isum2 = Isum2/20 ' หารด้วยจำนวนทั้งหมด

Irms = SQR(Isum2) ' ถอดรากที่สอง

Irms = Irms * 20 'แบ่งสเกล 512 ระดับ = 20 A

Irms = Irms / 512 'หารด้วยจำนวนสเกล

End Function



โครงการกะเทยท่องโลก

RMS สร้างอาร์เรย์ ๑ มิติ บวกยกกำลังสองสะสม หารด้วย จำนวนทั้งหมด แล้วถอดรากที่สอง

Dim Isamp As word
Dim Isamp2 As Long
Dim SumI2 as Single

Dim Icount as Byte


DeclareFunction Irms() As Single

Function Irms () As Single

Isum2 = 0

For Icount = 1 to 20

Isamp = GetADC(1)
Isamp = 512 - Isamp 'ลบออกจาก 2.5 V
Isamp2 = Isamp ^ 2 'ยกกำลังสอง
Isum2 = Isum2 + Isamp2 'บวกสะสม

Waitms 1
Next

Isum2 = Isum2/20 ' หารด้วยจำนวนทั้งหมด

Irms = SQR(Isum2) ' ถอดรากที่สอง

Irms = Irms * 20 'แบ่งสเกล 512 ระดับ = 20 A

Irms = Irms / 512 'หารด้วยจำนวนสเกล

End Function

ขอบคุณมากๆคับสำหรับข้อมูลเป็นประโบชน์มากคับ