ในการกวดวิชานี้เราจะมีการพัฒนาแหล่งจ่ายแรงดัน 5V ตัวแปรจาก Arduino Uno สำหรับสิ่งนั้นเราจะใช้คุณลักษณะ ADC (Analog to Digital Conversion) และ PWM (Pulse Width Modulation)
โมดูลอิเล็กทรอนิกส์ดิจิทัลบางตัวเช่น accelerometer ทำงานกับแรงดันไฟฟ้า 3.3V และบางส่วนทำงานบน 2.2V บางคนทำงานกับแรงดันไฟฟ้าที่ต่ำกว่า ด้วยเหตุนี้เราจึงไม่สามารถรับตัวควบคุมสำหรับทุกคนได้ ดังนั้นที่นี่เราจะสร้างวงจรอย่างง่ายซึ่งจะให้แรงดันไฟฟ้าตั้งแต่ 0-5 โวลต์ที่ความละเอียด 0.05V ด้วยเหตุนี้เราอาจให้แรงดันไฟฟ้าอย่างแม่นยำสำหรับโมดูลอื่น ๆ
วงจรนี้สามารถจ่ายกระแสได้สูงถึง 100mA ดังนั้นเราจึงสามารถใช้หน่วยกำลังนี้กับโมดูลเซ็นเซอร์ส่วนใหญ่ได้โดยไม่มีปัญหาใด ๆ เอาต์พุตวงจรนี้สามารถใช้เพื่อชาร์จแบตเตอรี่แบบรีชาร์จ AA หรือ AAA ได้ ด้วยจอแสดงผลที่เราสามารถเห็นความผันผวนของพลังงานในระบบได้อย่างง่ายดาย ชุดจ่ายไฟแบบแปรผันนี้มีอินเทอร์เฟซปุ่มสำหรับการเขียนโปรแกรมแรงดันไฟฟ้า การทำงานและวงจรอธิบายไว้ด้านล่าง
ฮาร์ดแวร์: Arduino Uno, แหล่งจ่ายไฟ (5v), ตัวเก็บประจุ 100uF (2 ชิ้น), ปุ่ม (2 ชิ้น), ตัวต้านทาน1KΩ (3 ชิ้น), LCD 16 * 2 ตัวอักษร, ทรานซิสเตอร์ 2N2222
ซอฟต์แวร์: Atmel studio 6.2 หรือ AURDINO ทุกคืน
แผนภาพวงจรและคำอธิบายการทำงาน
วงจรสำหรับหน่วยแรงดันไฟฟ้าตัวแปรใช้ Arduino จะแสดงในแผนภาพด้านล่าง
แรงดันไฟฟ้าข้ามเอาต์พุตไม่เป็นเส้นตรงอย่างสมบูรณ์ มันจะมีเสียงดัง ในการกรองตัวเก็บประจุสัญญาณรบกวนจะถูกวางไว้บนขั้วเอาต์พุตดังแสดงในรูป ปุ่มสองปุ่มที่นี่มีไว้สำหรับการเพิ่มและลดแรงดันไฟฟ้า หน่วยแสดงผลจะแสดงแรงดันไฟฟ้าที่ขั้ว OUTPUT
ก่อนที่จะไปสำหรับการทำงานเราต้องมองไปADC และ PWM คุณสมบัติของ Arduino UNO
ที่นี่เราจะนำแรงดันไฟฟ้าที่ให้มาที่ขั้ว OUTPUT และป้อนเข้าเป็นหนึ่งในช่อง ADC ของ Arduino หลังจากการแปลงเราจะรับค่า DIGITAL นั้นและเราจะเชื่อมโยงกับแรงดันไฟฟ้าและแสดงผลลัพธ์ในจอแสดงผล 16 * 2 ค่านี้บนหน้าจอแสดงถึงค่าแรงดันไฟฟ้าที่แปรผัน
ARDUINO มีช่อง ADC หกช่องดังแสดงในรูป ในหนึ่งหรือทั้งหมดสามารถใช้เป็นอินพุตสำหรับแรงดันไฟฟ้าแบบอะนาล็อก UNO ADC มีความละเอียด 10 บิต (ดังนั้นค่าจำนวนเต็มตั้งแต่ (0- (2 ^ 10) 1023)) ซึ่งหมายความว่าจะจับคู่แรงดันไฟฟ้าอินพุตระหว่าง 0 ถึง 5 โวลต์เป็นค่าจำนวนเต็มระหว่าง 0 ถึง 1023 ดังนั้นสำหรับทุกๆ (5/1024 = 4.9mV) ต่อหน่วย
ที่นี่เราจะใช้ A0 ของ UNO
|
ก่อนอื่นช่อง UNO ADC มีค่าอ้างอิงเริ่มต้นที่ 5V ซึ่งหมายความว่าเราสามารถให้แรงดันไฟฟ้าอินพุตสูงสุด 5V สำหรับการแปลง ADC ที่ช่องอินพุตใดก็ได้ เนื่องจากเซ็นเซอร์บางตัวให้แรงดันไฟฟ้าตั้งแต่ 0-2.5V ด้วยการอ้างอิง 5V เราจึงมีความแม่นยำน้อยกว่าดังนั้นเราจึงมีคำสั่งที่ช่วยให้เราสามารถเปลี่ยนค่าอ้างอิงนี้ได้ ดังนั้นสำหรับการเปลี่ยนค่าอ้างอิงเรามี (“ analogReference ();”) สำหรับตอนนี้เราปล่อยให้เป็น
ตามค่าเริ่มต้นเราจะได้รับความละเอียด ADC สูงสุดของบอร์ดซึ่งเป็น 10 บิตความละเอียดนี้สามารถเปลี่ยนแปลงได้โดยใช้คำสั่ง (“ analogReadResolution (bits);”) การเปลี่ยนแปลงความละเอียดนี้อาจมีประโยชน์ในบางกรณี สำหรับตอนนี้เราปล่อยไว้เป็น
ตอนนี้หากเงื่อนไขข้างต้นถูกตั้งค่าเป็นค่าเริ่มต้นเราสามารถอ่านค่าจาก ADC ของช่อง '0' ได้โดยการเรียกใช้ฟังก์ชัน "analogRead (พิน)" โดยตรงในที่นี้ "พิน" หมายถึงพินที่เราเชื่อมต่อสัญญาณแอนะล็อกในกรณีนี้ จะเป็น“ A0”
ค่าจาก ADC สามารถนำมาเป็นจำนวนเต็มเป็น "float VOLTAGEVALUE = analogRead (A0); ” โดยคำสั่งนี้ค่าหลังจาก ADC จะถูกเก็บไว้ในจำนวนเต็ม“ VOLTAGEVALUE”
PWM ของ UNO สามารถทำได้ที่หมุดใด ๆ ที่มีสัญลักษณ์เป็น“ ~” บนบอร์ด PCB มีช่องสัญญาณ PWM หกช่องใน UNO เราจะใช้ PIN3 ตามวัตถุประสงค์ของเรา
analogWrite (3, VALUE); |
จากเงื่อนไขข้างต้นเราสามารถรับสัญญาณ PWM ได้โดยตรงที่พินที่เกี่ยวข้อง พารามิเตอร์แรกในวงเล็บใช้สำหรับเลือกหมายเลขพินของสัญญาณ PWM พารามิเตอร์ที่สองใช้สำหรับการเขียนอัตราส่วนหน้าที่
ค่า PWM ของ UNO สามารถเปลี่ยนแปลงได้จาก 0 ถึง 255 โดยให้“ 0” ต่ำสุดถึง“ 255” สูงสุด ด้วย 255 เป็นอัตราส่วนหน้าที่เราจะได้รับ 5V ที่ PIN3 หากกำหนดอัตราส่วนหน้าที่เป็น 125 เราจะได้รับ 2.5V ที่ PIN3
ดังที่กล่าวไว้ก่อนหน้านี้มีปุ่มสองปุ่มที่เชื่อมต่อกับ PIN4 และ PIN5 ของ UNO เมื่อกดค่าอัตราส่วนหน้าที่ของ PWM จะเพิ่มขึ้น เมื่อกดปุ่มอื่นค่าอัตราส่วนหน้าที่ของ PWM จะลดลง ดังนั้นเราจึงเปลี่ยนอัตราส่วนหน้าที่ของสัญญาณ PWM ที่ PIN3
สัญญาณ PWM นี้ที่ PIN3 ถูกป้อนเข้าที่ฐานของทรานซิสเตอร์ NPN ทรานซิสเตอร์นี้ให้แรงดันไฟฟ้าแปรผันที่ตัวปล่อยในขณะที่ทำหน้าที่เป็นอุปกรณ์สวิตชิ่ง
ด้วยอัตราส่วนหน้าที่ตัวแปร PWM ที่ฐานจะมีแรงดันไฟฟ้าแปรผันที่เอาต์พุตของตัวปล่อย ด้วยเหตุนี้เราจึงมีแหล่งกำเนิดแรงดันไฟฟ้าแบบแปรผันอยู่ในมือ
เอาท์พุทแรงดันไฟฟ้าป้อนไปยัง UNO ADC เพื่อให้ผู้ใช้เห็นแรงดันไฟฟ้าขาออก