คือผมจะสร้างpwm เพื่อต่อเข้าวงจร H-bride มันสร้างได้ไหมครับ แล้วมีแนวทางการเขียนโค้ดยังไงได้บ้างครับ
พอดีผมเข้าไปเจอโค้ดของพี่พอดีครับ คือผมจะทำโปรเจคหม้อแปลงเทสลาควบคุมโดยใช้arduino ใช้อาดูโน่ไปสร้างพัลแล้วไปต่อเข้ากับวงจร h bride อ่ะครับ
ถ้าใช้โค้ตแบบนี้จะดีไหมครับ แล้วถ้าผมอยากจะเปลี่ยน duty cycle เป็น 50% ผมต้องทำยังไง เพิ่มโค้ตหรือแก้โค้ตตรงไหนบ้างครับ
เบื้องต้นเปลี่ยน /4 เป็น /2 ครับ น่าจะออกเป็น 50% นะครับ
ระวังเรื่องเดตทามด้วย 50/50 มันอาจชนกันครับ
ควรปรับเผื่อระยะเดตทามด้วยครับ ควรปรับค่าดิวตี้ไซเคิ้ลมากสุดที่ 45% ครับ
คือผมอยากจะรู้ว่าถ้าผมจะสร้างพัลบวกและพัลบแยกกันเพื่อไปต่อเข้ากับวงจรH bride มันจะมีแนวทางอย่างไรบ้างครับ ผมทำที่ความถี่ 210kHz โดยประมาณ
ขอรูปพัล ที่ต้องการหน่อยครับวาดมาก็ได้จะได้เข้าใจตรงกัน
ตามโค้ตนี้ output ก็ออกสองขานิครับ ออกที่ขา 9 และ 10
ผมเห็นพี่เขียนโค้ดประกาศ pinmode(9,outtput); แล้วผมลองซิมในโปรแกรมโพทีอุส แล้วใช้สโคปวัด มันออกแค่ขาเดียว คือขา9 ที่ประกาศ output อ่ะครับ แล้วก็ ถ้าผมต้องการ ให้ได้กราฟตามรูปที่ผมส่ง ที่ทำให้เฟสต่างอ่ะครับ ผมต้องปรับDuty cycle และมุมเฟสยังไงให้ได้ตามรูปที่ผมส่งไปอ่ะครับพี่
#include "TimerOne.h"
int pot = 0; // analog value 0-5VDC : 0-255
void setup()
{
OCR2A = pot;
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Timer1.initialize(20); // initialize timer1, and set at 50kHz
Timer1.pwm(9, pot); // setup pwm on pin 9, 25% duty cycle
Timer1.pwm(10, pot); // setup pwm on pin 10, 25% duty cycle
TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
TCCR2B = _BV(CS20); // prescaler à 1.
OCR2A = pot;
}
void loop()
{
pot = analogRead(A0)/4; // Value between 0 and 255
Timer1.pwm(9, pot); // setup pwm on pin 9, 25% duty cycle
Timer1.pwm(10, pot); // setup pwm on pin 10, 25% duty cycle
}
ขอแก้ไขเบื้องต้นเรื่องที่ซิมแล้ว ออกแค่พินเดียวก่อนนะครับ โดยการเพิ่ม
pinMode(10, OUTPUT);
เข้าไปครับเพราะว่าเราไม่ได้ประกาศให้มันเป็น output มันเลยไม่มี PWM ออกมาที่ pin 10 ครับ
ส่วนเรื่องต้องการชิฟเฟสกันติดตามได้จากกระทู้นนี้ครับ
พี่ครับถ้าผมต้องการที่จะใช้ตัว R ปรับค่าได้ในการปรับความถี่ต้องเพิ่มโค้ดจากส่วนตรงไหนบ้างครับ
เคยทำแต่ R ปรับ Duty ครับ ปรับความถี่ ลองหาโค้ต ใน google มาคุยกันดูครับ
ขอดูโค้ดที่ปรับdutyหน่อยได้ไหมครับ
แบบไหนหรอครับ
ที่ใช้ R ปรับค่าได้ในการปรับอ่ะครับ
ตอบให้ไปแล้วในโค้ตล่าสุดครับ
pot = analogRead(A0)/4; // Value between 0 and 255
บรรทัดนี้จะเป็นการอ่านค่าแรงดัน 0 - 5 V เพื่อเอามาปรับค่าดิวตี้ไซเคิ้ล เราสามารถทำได้สองวิธีคือ
จ่ายแรงดัน 0 - 5 V ที่สามารถปรับค่าได้เข้าไปเลย สองคือ คำนวณ โวลท์เตจ ดีไวเดอร์ แต่ละช่วง 0 1 2 3 4 และ 5 V ตามลำดับ เพื่อให้ได้ ตัวต้านทางมาต่อเป็นวงจรปรับได้ เพื่อปรับแรงดันครับ