Სარჩევი:

AC მიმდინარე მონიტორინგის მონაცემთა ჩამწერი: 9 ნაბიჯი (სურათებით)
AC მიმდინარე მონიტორინგის მონაცემთა ჩამწერი: 9 ნაბიჯი (სურათებით)

ვიდეო: AC მიმდინარე მონიტორინგის მონაცემთა ჩამწერი: 9 ნაბიჯი (სურათებით)

ვიდეო: AC მიმდინარე მონიტორინგის მონაცემთა ჩამწერი: 9 ნაბიჯი (სურათებით)
ვიდეო: Lesson 68, Home Automation: How to control 16 Channel Relay module using Arduino control 16 AC loads 2024, ნოემბერი
Anonim
AC მიმდინარე მონიტორინგის მონაცემთა Logger
AC მიმდინარე მონიტორინგის მონაცემთა Logger

გამარჯობა ყველას, კეთილი იყოს თქვენი მობრძანება ჩემს პირველ სასწავლებელში! დღის განმავლობაში მე ვარ საინჟინრო ინჟინერი იმ კომპანიისათვის, რომელიც ამარაგებს სამრეწველო გათბობის მოწყობილობებს, ღამით მე ვარ უყვარს ტექნოლოგიის მოყვარული და წვრილმანი. ჩემი მუშაობის ნაწილი მოიცავს გამათბობლების მუშაობის შემოწმებას, ამ შემთხვევისთვის მინდოდა შემეძლო თვალყური ადევნო 8 მოწყობილობის RMS– ის მიმდინარე გათამაშებას 1000 სთ – ზე და შევიტანო მონაცემები, რათა მოგვიანებით დავხატო შედეგები. მე მაქვს წვდომა მონაცემთა მრიცხველზე, მაგრამ ის უკვე სხვა პროექტზე იყო დაფუძნებული და მე მჭირდებოდა რაღაც დაბალი ღირებულება, ამიტომ გადავწყვიტე ამ ძირითად მონაცემთა დამრიგებელს მოვკალათდე.

პროექტი იყენებს Arduino Uno– ს ანალოგური სენსორების წასაკითხად ანალოგურ ციფრულ გადამყვანად (ADC) და მონაცემებს ჩაწერს SD ბარათზე დროის ბეჭდით. სქემების დიზაინში ბევრი თეორია და გაანგარიშებაა ჩართული, ასე რომ, იმის ნაცვლად, რომ აბსოლუტურად ავუხსნა ყველაფერი, მე უბრალოდ გაჩვენებთ როგორ გააკეთოთ ეს. თუ თქვენ დაინტერესებული ხართ სრული ჰიტის ნახვით, შემატყობინეთ კომენტარებში და მე განვმარტავ შემდგომ.

ᲨᲔᲜᲘᲨᲕᲜᲐ:

მე მქონდა უამრავი შეკითხვა True RMS გამოთვლების შესახებ. ეს მოწყობილობა იყენებს ნახევარ ტალღის მაკორექტირებელს ტალღის პიკის დასაფიქსირებლად, რომელიც შემდგომში შეიძლება გამრავლდეს 0.707 -ით RMS- ის მისაცემად. თანმიმდევრულად ის მხოლოდ ზუსტ შედეგს მისცემს წრფივი დატვირთვებით (ანუ მიმდინარე გაზომილი არის სუფთა სინუსური ტალღა). არაწრფივი მარაგები ან დატვირთვები, რომლებიც იძლევა სამკუთხა, მართკუთხა ან სხვა სინუსური ტალღების ფორმას, არ მისცემს ნამდვილ RMS გამოთვლას. ეს მოწყობილობა ზომავს AC დენს მხოლოდ ის არ არის განკუთვნილი ძაბვის გასაზომად, თანმიმდევრულად ის არ ითვლის და არ გაზომავს სიმძლავრის ფაქტორს. გთხოვთ იხილოთ ჩემი სხვა ინსტრუქცია, თუ როგორ შევქმნათ სიმძლავრის ფაქტორის მრიცხველი, რომელიც შეიძლება გამოყენებულ იქნას ამისათვის. ბევრმა ადამიანმა ასევე თქვა, რომ სწორი AC დაწყვილება 2.5V ცენტრალურ ხაზთან არის უკეთესი, თუმცა ეს იწვევს გართულებებს, რადგან მოიცავს საკმარისად სწრაფი ციფრული შერჩევის მაჩვენებელს, საშუალო საშუალო სიმძლავრის/მონაცემთა დაზუსტებას და ა. შ. ნედლი ღირებულება. პირადად მე მირჩევნია აპარატურის გადაწყვეტილებები და უფრო მარტივი კოდი, სადაც ეს შესაძლებელია, ასე რომ მე არ ვარ დაინტერესებული ამ მეთოდით. სიზუსტით მე მჯერა, რომ ეს ბევრად უკეთესია ვიდრე ეს უკანასკნელი და მოგვიანებით ნახავთ, რომ ჩემს შედეგებში არის კალიბრაციის შემდგომი რეგრესიის კოეფიციენტი 1.0 -თან ახლოს.

ნაბიჯი 1: მიმდინარე ტრანსფორმატორები

მიმდინარე ტრანსფორმატორები
მიმდინარე ტრანსფორმატორები
მიმდინარე ტრანსფორმატორები
მიმდინარე ტრანსფორმატორები

ეს პროექტი იყენებს HMCT103C 5A/5MA მიმდინარე ტრანსფორმატორს. მას აქვს 1: 1000 ბრუნვის თანაფარდობა, რაც ნიშნავს დირიჟორში გამავალი დენის ყოველ 5A– სთვის, 5 mA შემოვა CT– ით. რეზისტორი უნდა იყოს დაკავშირებული კომპიუტერის ორი ტერმინალის გასწვრივ, რათა მოხდეს ძაბვის გაზომვა მასზე. ამ შემთხვევაში მე გამოვიყენე 220 Ohm რეზისტორი, ამიტომ Ohm- ის კანონის V = IR გამოყენებით, CT გამომავალი იქნება 1.1 ვოლტი AC, ყოველ 5mA CT დენისთვის (ან გაზომილი დენის ყოველი 5A). კომპიუტერული ტომოგრაფია გაერთიანდა რეზისტორთან ერთად დაფაზე და ინსტრუმენტის მავთულხლართების შესაქმნელად. მე შეწყვიტა ლიდერობს 3.5 მმ მამრობითი აუდიო ჯეკის სანთლებით.

აქ მოცემულია მონაცემთა ტრანსფორმატორი მიმდინარე ტრანსფორმატორისთვის

Მონაცემთა ფურცელი

ნაბიჯი 2: სიგნალის კონდიცირება

სიგნალის კონდიცირება
სიგნალის კონდიცირება
სიგნალის კონდიცირება
სიგნალის კონდიცირება

კომპიუტერული ტომოგრაფიის სიგნალი სუსტი იქნება, ამიტომ უნდა გაძლიერდეს. ამისათვის შევაერთე მარტივი გამაძლიერებლის წრე uA741 ორმაგი სარკინიგზო გამაძლიერებლის გამოყენებით. ამ შემთხვევაში, მოგება განისაზღვრება 150 -ით, ფორმულის Rf / Rin (150k / 1k) გამოყენებით. თუმცა გამაძლიერებლის გამოსასვლელი სიგნალი ჯერ კიდევ AC- ია, დიოდური გამოსასვლელი op-amp- ზე წყვეტს AC- ის უარყოფით ნახევარ ციკლს და დადებით ძაბვას გადასცემს 0.1uF კონდენსატორს, რათა ტალღა გლუვი DC სიგნალში გადაიზარდოს. ქვემოთ მოცემულია ნაწილები, რომლებიც ქმნიან წრეს:

  • V1-ეს არის თვითნებური ამ დიაგრამაში, ის უბრალოდ წარმოადგენს სიგნალის ძაბვას, რომელიც იკვებება op-amp- ის არაინვერტირებული შეყვანისას.
  • R1 - ეს ცნობილია როგორც უკუკავშირის რეზისტორი (Rf) და არის 150k
  • R2 - ეს ცნობილია როგორც შეყვანის რეზისტორი (Rin) და დაყენებულია 1k
  • 741 - ეს არის uA741 ინტეგრირებული წრე
  • VCC - მიწოდების პოზიტიური სარკინიგზო +12V
  • VEE - უარყოფითი მიწოდების რკინიგზა -12V
  • D1 - არის თუ არა ტალღის გამოსასწორებელი სიგნალის დიოდი 1N4001
  • C3 - ეს კაპაქტორი ინახავს DC სიგნალს განსაზღვრული დროის განმავლობაში

სურათზე 2 თქვენ ხედავთ, რომ იგი აწყობილი იყო Veroboard და დაკონსერვებული სპილენძის მავთულის გამოყენებით. 4 ხვრელი გაბურღულია PCB დენისთვის, რათა მოხდეს მათი დალაგება (რადგან რვა არხი არსებობს, სულ უნდა იყოს რვა გამაძლიერებელი სქემა.

ნაბიჯი 3: ელექტრომომარაგება

Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო
Ენერგიის წყარო

თუ თქვენ არ მოგწონთ მისი ნულიდან დამზადება, მაშინ შეგიძლიათ შეიძინოთ ჩინეთიდან წინასწარ აწყობილი დაფა, როგორც ზემოთ აღწერილი, მაგრამ თქვენ მაინც დაგჭირდებათ 3VA ტრანსფორმატორი (გადადით 240V– დან 12V– მდე). სურათზე დამიჯდა დაახლოებით 2.50 ფუნტი

პროექტის გასაძლიერებლად მე გადავწყვიტე გამეკეთებინა საკუთარი ორმაგი სარკინიგზო 12VDC კვების წყარო. ეს მოსახერხებელი იყო, რადგან ოპ -ამპერები მოითხოვს +12V, 0V, -12V და Arduino Uno– ს შეუძლია მიიღოს ნებისმიერი მარაგი 14 VDC– მდე. ქვემოთ მოცემულია ნაწილები, რომლებიც ქმნიან წრეს:

  • V1 - ეს წარმოადგენს კვების ბლოკს 240V 50Hz
  • T1 - ეს არის პატარა 3VA ტრანსფორმატორი, რომლის შესახებაც მე ვიტყუებოდი. მნიშვნელოვანია, რომ ტრანსფორმატორს ჰქონდეს ცენტრალური ონკანი მეორადზე, რომელიც დაუკავშირდება 0V- ს, ანუ მიწას
  • D1 დან D4 - ეს არის სრული ტალღის ხიდის გასწორება 1N4007 დიოდების გამოყენებით
  • C1 & C2 - 35V ელექტროლიტური კონდენსატორები 2200uF (უნდა იყოს 35V, რადგან პოზიტიურ და უარყოფით პოტენციალს მიაღწევს 30V)
  • U2 - LM7812, არის 12 ვ დადებითი ძაბვის რეგულატორი
  • U3 - LM7912, არის 12V უარყოფითი ძაბვის მარეგულირებელი (ფრთხილად იყავით, გაითვალისწინეთ pin განსხვავებები 78xx და 79xx IC- ს შორის!)
  • C3 & C4 - 100nF შესამცირებელი კონდენსატორები 25V ელექტროლიტური
  • C5 & C6 - 10uF კერამიკული დისკის კონდენსატორები

მე შევაერთე კომპონენტები ზოლის დაფაზე და შევაერთე ვერტიკალური ბილიკები შიშველი ერთი ბირთვიანი დაკონსერვებული სპილენძის მავთულით. სურათი 3 აჩვენებს ჩემს წვრილმანებს ელექტროენერგიის მიწოდებას, ბოდიში, რომ ფოტოში ბევრი მხტუნავია!

ნაბიჯი 4: ციფრული გადამყვანების ანალოგი

ციფრული გადამყვანების ანალოგი
ციფრული გადამყვანების ანალოგი
ციფრული გადამყვანების ანალოგი
ციფრული გადამყვანების ანალოგი

Arduino Uno– ს უკვე აქვს 10 ბიტიანი ADC, თუმცა არის მხოლოდ 6 ანალოგური შეყვანა. ამიტომ მე ავირჩიე ორი ADC გარღვევა ADS1115 16 ბიტიანი გამოყენებით. ეს საშუალებას აძლევს 2^15 = 32767 ბიტს წარმოადგინონ ძაბვის დონე 0-4.096V- დან (4.096V არის გარღვევის სამუშაო ძაბვა), ეს ნიშნავს, რომ თითოეული ბიტი წარმოადგენს 0.000125V! ასევე, რადგან ის იყენებს I2C ავტობუსს, ეს იმას ნიშნავს, რომ 4 ADC– მდე შეიძლება იყოს მიმართული, რაც შესაძლებელს გახდის 16 – მდე არხის მონიტორინგს სურვილის შემთხვევაში.

მე შევეცადე კავშირების ილუსტრაცია Fritzing– ის გამოყენებით, თუმცა შეზღუდვების გამო არ არსებობს ცალკეული ნაწილები სიგნალის გენერატორის ილუსტრაციისთვის. მეწამული მავთული უკავშირდება გამაძლიერებლის მიკროსქემის გამოსვლას, მის გვერდით შავი მავთული აჩვენებს, რომ გამაძლიერებლის ყველა სქემას უნდა ჰქონდეს საერთო საფუძველი. ასე რომ, მე გამოვიყენე პურის დაფა იმის საილუსტრაციოდ, თუ როგორ გავაკეთე ჰალსტუხის ქულები. თუმცა ჩემს რეალურ პროექტს აქვს გარღვევები, რომლებიც ზის ქალის თავებში, იწერება Veroboard– ზე და ყველა ჰალსტუხის ქულა მოთავსებულია veroboard– ზე.

ნაბიჯი 5: მიკროკონტროლერი

მიკროკონტროლერი
მიკროკონტროლერი

როგორც ზემოთ აღვნიშნეთ, მე ავირჩიე კონტროლიორი Arduino Uno, ეს იყო კარგი არჩევანი, რადგან მას აქვს ბევრი ბორტი და ჩამონტაჟებული ფუნქციონირება, რომელიც სხვაგვარად ცალკე უნდა აშენებულიყო. გარდა ამისა, ის თავსებადია სპეციალურად აშენებულ "ფარებთან". ამ დროს მე მოვითხოვე რეალურ დროში საათი ყველა შედეგის დროულად მონიშვნისათვის და SD ბარათის დამწერელს, რომ ჩავწერო შედეგები.csv ან.txt ფაილში. საბედნიეროდ, Arduino– ს მონაცემთა დამცავი ფარი აქვს ორივე ფარს, რომელიც ათავსებს მორგებას ორიგინალ Arduino დაფაზე დამატებითი შედუღების გარეშე. ფარი თავსებადია RTClib და SD ბარათების ბიბლიოთეკებთან, ამიტომ არ არის საჭირო რაიმე სპეციალური კოდი.

ნაბიჯი 6: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება

მე გამოვიყენე 5 მმ საშუალო ზომის/დაბალი სიმკვრივის PVC (ზოგჯერ ცნობილია როგორც ქაფის დაფა) ჩემი კომპონენტების უმეტესი ნაწილის გასანადგურებლად და ხელსაყრელ ზომაზე დაჭრისთვის. ყველა კომპონენტი აშენდა მოდულურად პროტოტიპისთვის, რადგან ის იძლევა ცალკეული ნაწილების ამოღების საშუალებას, თუ რამე არასწორედ წარიმართება, თუმცა ის არ არის ისეთი ეფექტური და მოწესრიგებული, როგორც ამოტვიფრული PCB (შემდგომი მუშაობა) ეს ასევე ნიშნავს ბევრ ჯუმბერ მავთულს შორის კომპონენტები.

ნაბიჯი 7: კოდის ატვირთვა

ატვირთეთ კოდი არდუინოში, ან მიიღეთ კოდი ჩემი Github რეპოდან

github.com/smooth-jamie/datalogger.git

ნაბიჯი 8: კალიბრაცია

კალიბრაცია
კალიბრაცია
კალიბრაცია
კალიბრაცია
კალიბრაცია
კალიბრაცია

თეორიულად გაზომილი დენი იქნება რამდენიმე რამის კომბინირებული შედეგი:

გაზომილი ამპერი = (((a *0.45)/150)/(1.1/5000))/1000 სადაც 'a' არის სიგნალის ძაბვა გამაძლიერებელიდან

0.45 არის გამაძლიერებელი მიკროსქემის Vout- ის rms მნიშვნელობა, 150 არის op-amp- ის მომატება (Rf / Rin = 150k / 1k), 1.1 არის კომპიუტერული ტომოგრაფიის სრული მასშტაბის ძაბვის გამომუშავება 5A, 5000 უბრალოდ 5A in mA, და 1000 არის ტრანსფორმატორში შემობრუნების რაოდენობა. ეს შეიძლება გამარტივდეს:

გაზომილი ამპერი = (b * 9.216) / 5406555 სადაც b არის ADC მოხსენებული მნიშვნელობა

ეს ფორმულა შემოწმდა Arduino 10-ბიტიანი ADC გამოყენებით და განსხვავება მულტიმეტრის მნიშვნელობებსა და Arduino გენერირებულ მნიშვნელობებს შორის დაფიქსირდა 11% -ით, რაც მიუღებელი გადახრაა. ჩემი სასურველი მეთოდი კალიბრაციისთვის არის ცხრილში ADC მნიშვნელობის ჩაწერა მულტიმეტრზე და მესამე რიგის მრავალწევრის გამოსახვა. აქედან კუბური ფორმულა შეიძლება გამოყენებულ იქნას უკეთესი შედეგის მისაღებად გაზომილი დენის გამოთვლისას:

(ax^3) + (bx^2) + (cx^1) + d

კოეფიციენტები a, b, c და d გამოითვლება Excel– ში მარტივი მონაცემების ცხრილიდან, x არის თქვენი ADC მნიშვნელობა.

მონაცემების მისაღებად გამოვიყენე კერამიკული 1k ცვლადი რეზისტორი (რეოსტატი) და 12 ვ ტრანსფორმატორი ქსელში AC ვოლტაჟის დასაწევად 240 ვ -დან, რაც მომცემს წარმოქმნის ცვლადი დენის წყაროს 13mA– დან 100mA– მდე. რაც უფრო მეტი მონაცემთა ქულაა შეგროვებული, მით უკეთესი, მაგრამ მე გირჩევთ შეაგროვოთ 10 მონაცემთა წერტილი ზუსტი ტენდენციის მოსაპოვებლად. თანდართული Excel შაბლონი გამოგითვლის კოეფიციენტებს, უბრალოდ საქმე იმაშია არდუინოს კოდში შეყვანა

კოდის 69 -ე ხაზზე ნახავთ სად შეიყვანოთ კოეფიციენტები

float chn0 = ((7.30315 * pow (10, -13)) * pow (adc0, 3) + (-3.72889 * pow (10, -8) * pow (adc0, 2) + (0.003985811 * adc0) + (0.663064521)));

რაც იგივეა, რაც ფორმულა Excel 1 -ის ფურცელში:

y = 7E-13x3-4E-08x2 + 0.004x + 0.663

სადაც x = adc0 ნებისმიერი არხის დაკალიბრებისას

ნაბიჯი 9: დასრულება

დასრულება
დასრულება
დასრულება
დასრულება
დასრულება
დასრულება
დასრულება
დასრულება

განათავსეთ იგი პროექტის დანართში. დავამთავრე კვების ბლოკი გადამრთველით, რომ ყველაფერი ჩართულიყო/გამორთულიყო და IEC "ფიგურა 8" კონექტორი მაგისტრალური შეყვანისთვის. გაახურეთ ეს ყველაფერი ერთად და მზად ხართ გამოსცადოთ.

შემდგომი მუშაობა

მთელი პროექტი დაცინულ იქნა საკმაოდ სწრაფად, ასე რომ არსებობს ბევრი ადგილი გაუმჯობესებისათვის, ამოტვიფრული წრე, უკეთესი კომპონენტები. იდეალურ შემთხვევაში, ყველაფერი იქნება ამოტვიფრული ან შეკრული FR4– ზე, ვიდრე მხტუნავების დატვირთვა. როგორც ადრე ვთქვი, არის ბევრი ისეთი რამ, რაც მე არ მიხსენებია, მაგრამ თუ რაიმე კონკრეტული გსურთ იცოდეთ, შემატყობინეთ კომენტარებში და მე განვაახლებ ინსტრუქციას!

განახლება 2016-12-18

მე ახლა დავამატე 16x2 LCD I2C "ზურგჩანთით" პირველი ოთხი არხის მონიტორინგისთვის, დავამატებ კიდევ ერთს ბოლო ოთხის მონიტორინგისას, როდესაც ის ჩავა პოსტის საშუალებით.

კრედიტები

ეს პროექტი შესაძლებელი გახდა ბიბლიოთეკების ყველა ავტორის მიერ, რომელიც გამოიყენებოდა ჩემს არდუინოს ესკიზში, მათ შორის DS3231 ბიბლიოთეკას, Adafruit ADS1015 ბიბლიოთეკას და Arduino SD ბიბლიოთეკას

გირჩევთ: