วันอังคารที่ 13 ธันวาคม พ.ศ. 2559

GT15J331 สร้าง เครื่องควบคุมมอเตอร์ สามเฟสGT15J331 สร้าง เครื่องควบคุมมอเตอร์ สามเฟส Sompong Tungmepol Sompong Tungmepol ติดตามแล้ว26,723 เพิ่มลงใน แชร์ เพิ่มเติม ดู 128 ครั้ง 1 0 แชร์ฝังอีเมล https://youtu.be/Yk5nnmRZU7c เริ่มเวลา 4:07 เผยแพร่เมื่อ 26 ต.ค. 2016 GT15J331 สร้าง เครื่องควบคุมมอเตอร์ สามเฟส วงจรและโค๊ด หาได้จากที่นี่ครับ http://www.emergingtechs.org/p/blog-p... รุ่นใหม่ ราคา1000 บาท ครับ นำไปบัดกรีและต่อเติมตามถนัดครับ..มี บอร์ด Arduino 1 บอร์ด ราคา 700 บาท และ PS21244 1 ตัว หรือ PS21963 PS219A2 ราคา 300 บาท ครับ ลงวันที่ 18 ตุลาคม 2559 โปรแกรม เป็นแบบ PURE SINE เฟสเดียว หรือ แบบ สามเฟส แบบ DC FULL BRIDGE ก็ ได้ครับ แสดงเพิ่มเติม ความคิดเห็น • 2 สมพงศ์ อินดัสเตรียล อิเล็กทรอนิคส์ เพิ่มความคิดเห็นสาธารณะ... ความคิดเห็นยอดนิยม Sompong Tungmepol Sompong Tungmepol1 เดือนที่ผ่านมา /* * * DDS Sine Generator mit ATMEGS 168 * Timer2 generates the 31250 KHz Clock Interrupt * * KHM 2009 / Martin Nawrath * Kunsthochschule fuer Medien Koeln * Academy of Media Arts Cologne */ #include "avr/pgmspace.h" // table of 256 sine values / one sine period / stored in flash memory PROGMEM prog_uchar sine256[] = { 127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231,233,234,236,238,239,240, 242,243,244,245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239,238,236,234,233,231,229,227,225,223, 221,219,217,215,212,210,208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90,87,84,81,78, 76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31, 33,35,37,39,42,44,46,49,51,54,56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124 }; #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) int ledPin = 13; // LED pin 7 int testPin = 7; int t2Pin = 6; byte bb; double dfreq; // const double refclk=31372.549; // =16MHz / 510 const double refclk=31376.6; // measured // variables used inside interrupt service declared as voilatile volatile byte icnt; // var inside interrupt volatile byte icnt1; // var inside interrupt volatile byte c4ms; // counter incremented all 4ms volatile unsigned long phaccu; // pahse accumulator volatile unsigned long tword_m; // dds tuning word m void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output Serial.begin(115200); // connect to the serial port Serial.println("DDS Test"); pinMode(6, OUTPUT); // sets the digital pin as output pinMode(7, OUTPUT); // sets the digital pin as output pinMode(11, OUTPUT); // pin11= PWM output / frequency output Setup_timer2(); // disable interrupts to avoid timing distortion cbi (TIMSK0,TOIE0); // disable Timer0 !!! delay() is now not available sbi (TIMSK2,TOIE2); // enable Timer2 Interrupt dfreq=1000.0; // initial output frequency = 1000.o Hz tword_m=pow(2,32)*dfreq/refclk; // calulate DDS new tuning word } void loop() { while(1) { if (c4ms > 250) { // timer / wait fou a full second c4ms=0; dfreq=analogRead(0); // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz cbi (TIMSK2,TOIE2); // disble Timer2 Interrupt tword_m=pow(2,32)*dfreq/refclk; // calulate DDS new tuning word sbi (TIMSK2,TOIE2); // enable Timer2 Interrupt Serial.print(dfreq); Serial.print(" "); Serial.println(tword_m); } sbi(PORTD,6); // Test / set PORTD,7 high to observe timing with a scope cbi(PORTD,6); // Test /reset PORTD,7 high to observe timing with a scope } } //**************************************************************** // timer2 setup // set prscaler to 1, PWM mode to phase correct PWM, 16000000/510 = 31372.55 Hz clock void Setup_timer2() { // Timer2 Clock Prescaler to : 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Mode set to Phase Correct PWM cbi (TCCR2A, COM2A0); // clear Compare Match sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); // Mode 1 / Phase Correct PWM cbi (TCCR2A, WGM21); cbi (TCCR2B, WGM22); } //**************************************************************** // Timer2 Interrupt Service at 31372,550 KHz = 32uSec // this is the timebase REFCLOCK for the DDS generator // FOUT = (M (REFCLK)) / (2 exp 32) // runtime : 8 microseconds ( inclusive push and pop) ISR(TIMER2_OVF_vect) { sbi(PORTD,7); // Test / set PORTD,7 high to observe timing with a oscope phaccu=phaccu+tword_m; // soft DDS, phase accu with 32 bits icnt=phaccu >> 24; // use upper 8 bits for phase accu as frequency information // read value fron ROM sine table and send to PWM DAC OCR2A=pgm_read_byte_near(sine256 + icnt); if(icnt1++ == 125) { // increment variable c4ms all 4 milliseconds c4ms++; icnt1=0; } cbi(PORTD,7); // reset PORTD,7 } แสดงน้อยลง ตอบกลับ Sompong Tungmepol Sompong Tungmepol1 เดือนที่ผ่านมา #include "avr/pgmspace.h" #include "avr/io.h" // Look Up table of a single sine period divied up into 256 values. Refer to PWM to sine.xls on how the values was calculated //PROGMEM prog_uchar sine256[] PROGMEM = { //const uint8_t sine256[] PROGMEM = { //const unsigned char sine256[] PROGMEM = { const byte sine256[] PROGMEM = { 127, 130, 133, 136, 139, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170, 173, 176, 178, 181, 184, 187, 190, 192, 195, 198, 200, 203, 205, 208, 210, 212, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 234, 236, 238, 239, 240, 242, 243, 244, 245, 247, 248, 249, 249, 250, 251, 252, 252, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 252, 252, 251, 250, 249, 249, 248, 247, 245, 244, 243, 242, 240, 239, 238, 236, 234, 233, 231, 229, 227, 225, 223, 221, 219, 217, 215, 212, 210, 208, 205, 203, 200, 198, 195, 192, 190, 187, 184, 181, 178, 176, 173, 170, 167, 164, 161, 158, 155, 152, 149, 146, 143, 139, 136, 133, 130, 127, 124, 121, 118, 115, 111, 108, 105, 102, 99, 96, 93, 90, 87, 84, 81, 78, 76, 73, 70, 67, 64, 62, 59, 56, 54, 51, 49, 46, 44, 42, 39, 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 42, 44, 46, 49, 51, 54, 56, 59, 62, 64, 67, 70, 73, 76, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 115, 118, 121, 124 }; #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) int PWM_OUT_1 = 11; // PWM output on pin 11 int PWM_OUT_2 = 10; // PWM output on pin 10 int PWM_OUT_3 = 9; // PWM output on pin 9 int LED_PIN = 13; // LED status on pin 13 int TEST_PIN = 7; // Scope trigger on pin 7 int POTEN_IN = A0; // Potentiometer on pin 0 int OFFSET_1 = 85; // Offset for second-phase int OFFSET_2 = 170; // Offset for third-phase double dfreq; const double refclk = 31376.6; // measured const uint64_t twoTo32 = pow(2, 32); // compute value at startup and use as constant // variables used inside interrupt service declared as voilatile volatile uint8_t icnt; // var inside interrupt volatile uint8_t icnt1; // var inside interrupt volatile uint8_t c4ms; // counter incremented every 4ms volatile uint32_t phase_accum; // pahse accumulator volatile uint32_t tword_m; // dds tuning word m //**************************************************************** void setup() { pinMode(LED_PIN, OUTPUT); // sets the digital pin as output Serial.begin(115200); // connect to the serial port Serial.println("DDS Test"); pinMode(TEST_PIN, OUTPUT); // sets the digital pin as output pinMode(PWM_OUT_1, OUTPUT); // PWM output / frequency output pinMode(PWM_OUT_2, OUTPUT); // PWM output / frequency output pinMode(PWM_OUT_3, OUTPUT); // PWM output / frequency output // Setup the timers setup_timer1(); setup_timer2(); // disable interrupts to avoid timing distortion cbi (TIMSK0, TOIE0); // disable Timer0 !!! delay() is now not available sbi (TIMSK2, TOIE2); // enable Timer2 Interrupt dfreq = 1000.0; // initial output frequency = 1000.0 Hz tword_m = twoTo32 * dfreq / refclk; // calulate DDS new tuning word } //**************************************************************** void loop() { if (c4ms > 250) // timer / wait for a full second { c4ms = 0; dfreq = analogRead(POTEN_IN); // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz cbi (TIMSK2, TOIE2); // disble Timer2 Interrupt tword_m = twoTo32 * dfreq / refclk; // calulate DDS new tuning word sbi (TIMSK2, TOIE2); // enable Timer2 Interrupt Serial.print(dfreq); Serial.print(" "); Serial.println(tword_m); } } //**************************************************************** // timer1 setup // set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock void setup_timer1(void) { // Timer1 Clock Prescaler to : 1 sbi (TCCR1B, CS10); cbi (TCCR1B, CS11); cbi (TCCR1B, CS12); // Timer0 PWM Mode set to Phase Correct PWM cbi (TCCR1A, COM1A0); // clear Compare Match sbi (TCCR1A, COM1A1); cbi (TCCR1A, COM1B0); // clear Compare Match sbi (TCCR1A, COM1B1); sbi (TCCR1A, WGM10); // Mode 1 / Phase Correct PWM cbi (TCCR1A, WGM11); cbi (TCCR1B, WGM12); cbi (TCCR1B, WGM13); } //**************************************************************** // timer2 setup // set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock void setup_timer2() { // Timer2 Clock Prescaler to : 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Mode set to Phase Correct PWM cbi (TCCR2A, COM2A0); // clear Compare Match sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); // Mode 1 / Phase Correct PWM cbi (TCCR2A, WGM21); cbi (TCCR2B, WGM22); } //**************************************************************** // Timer2 Interrupt Service at 31.25kHz = 32us // this is the timebase REFCLOCK for the DDS generator // FOUT = (M (REFCLK)) / (2 exp 32) // runtime : 8 microseconds ( inclusive push and pop) ISR(TIMER2_OVF_vect) { sbi(PORTD, TEST_PIN); // Test / set PORTD,TEST_PIN high to observe timing with a oscope phase_accum += tword_m; // soft DDS, phase accu with 32 bits icnt = phase_accum >> 24; // use upper 8 bits for phase accu as frequency information OCR2A = pgm_read_byte_near(sine256 + icnt); // read value fron ROM sine table and send to PWM DAC OCR1A = pgm_read_byte_near(sine256 + (uint8_t)(icnt + OFFSET_1)); OCR1B = pgm_read_byte_near(sine256 + (uint8_t)(icnt + OFFSET_2)); if (icnt1++ == 125) // increment variable c4ms every 4 milliseconds { c4ms++; icnt1 = 0; } cbi(PORTD, TEST_PIN); // reset PORTD,TEST_PIN }; // PWM output on pin 9 int LED_PIN = 13; // LED status on pin 13 int TEST_PIN = 7; // Scope trigger on pin 7 int POTEN_IN = A0; // Potentiometer on pin 0 int OFFSET_1 = 85; // Offset for second-phase int OFFSET_2 = 170; // Offset for third-phase double dfreq; const double refclk = 31376.6; // measured const uint64_t twoTo32 = pow(2, 32); // compute value at startup and use as constant // variables used inside interrupt service declared as voilatile volatile uint8_t icnt; // var inside interrupt volatile uint8_t icnt1; // var inside interrupt volatile uint8_t c4ms; // counter incremented every 4ms volatile uint32_t phase_accum; // pahse accumulator volatile uint32_t tword_m; // dds tuning word m //**************************************************************** void setup() { pinMode(LED_PIN, OUTPUT); // sets the digital pin as output Serial.begin(115200); // connect to the serial port Serial.println("DDS Test"); pinMode(TEST_PIN, OUTPUT); // sets the digital pin as output pinMode(PWM_OUT_1, OUTPUT); // PWM output / frequency output pinMode(PWM_OUT_2, OUTPUT); // PWM output / frequency output pinMode(PWM_OUT_3, OUTPUT); // PWM output / frequency output // Setup the timers setup_timer1(); setup_timer2(); // disable interrupts to avoid timing distortion cbi (TIMSK0, TOIE0); // disable Timer0 !!! delay() is now not available sbi (TIMSK2, TOIE2); // enable Timer2 Interrupt dfreq = 1000.0; // initial output frequency = 1000.0 Hz tword_m = twoTo32 * dfreq / refclk; // calulate DDS new tuning word } //**************************************************************** void loop() { if (c4ms > 250) // timer / wait for a full second { c4ms = 0; dfreq = analogRead(POTEN_IN); // read Poti on analog pin 0 to adjust output frequency from 0..1023 Hz cbi (TIMSK2, TOIE2); // disble Timer2 Interrupt tword_m = twoTo32 * dfreq / refclk; // calulate DDS new tuning word sbi (TIMSK2, TOIE2); // enable Timer2 Interrupt Serial.print(dfreq); Serial.print(" "); Serial.println(tword_m); } } //**************************************************************** // timer1 setup // set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock void setup_timer1(void) { // Timer1 Clock Prescaler to : 1 sbi (TCCR1B, CS10); cbi (TCCR1B, CS11); cbi (TCCR1B, CS12); // Timer0 PWM Mode set to Phase Correct PWM cbi (TCCR1A, COM1A0); // clear Compare Match sbi (TCCR1A, COM1A1); cbi (TCCR1A, COM1B0); // clear Compare Match sbi (TCCR1A, COM1B1); sbi (TCCR1A, WGM10); // Mode 1 / Phase Correct PWM cbi (TCCR1A, WGM11); cbi (TCCR1B, WGM12); cbi (TCCR1B, WGM13); } //**************************************************************** // timer2 setup // set prscaler to 1, PWM mode to phase correct PWM, 16000000/512 = 31.25kHz clock void setup_timer2() { // Timer2 Clock Prescaler to : 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Mode set to Phase Correct PWM cbi (TCCR2A, COM2A0); // clear Compare Match sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); // Mode 1 / Phase Correct PWM cbi (TCCR2A, WGM21); cbi (TCCR2B, WGM22); } //**************************************************************** // Timer2 Interrupt Service at 31.25kHz = 32us // this is the timebase REFCLOCK for the DDS generator // FOUT = (M (REFCLK)) / (2 exp 32) // runtime : 8 microseconds ( inclusive push and pop) ISR(TIMER2_OVF_vect) { sbi(PORTD, TEST_PIN); // Test / set PORTD,TEST_PIN high to observe timing with a oscope phase_accum += tword_m; // soft DDS, phase accu with 32 bits icnt = phase_accum >> 24; // use upper 8 bits for phase accu as frequency information OCR2A = pgm_read_byte_near(sine256 + icnt); // read value fron ROM sine table and send to PWM DAC OCR1A = pgm_read_byte_near(sine256 + (uint8_t)(icnt + OFFSET_1)); OCR1B = pgm_read_byte_near(sine256 + (uint8_t)(icnt + OFFSET_2)); if (icnt1++ == 125) // increment variable c4ms every 4 milliseconds { c4ms++; icnt1 = 0; } cbi(PORTD, TEST_PIN); // reset PORTD,TEST_PIN } แสดงน้อยลง ตอบกลับ เล่นอัตโนมัติ รายการถัดไป ช่าง วิทยุ ไม่ตกงาน สมพงศ์ อินดัสเตรียล อิเล็กทรอนิคส์ ดู 54 ครั้ง 5:38 solf start การควบคุมมอเตอร์ Sompong Tungmepol ดู 207 ครั้ง 4:56 PS21244 Sompong Tungmepol ดู 464 ครั้ง 7:44 เคล็ดลับอยู่ที่จิตไหวให้รู้ทัน สมพงศ์ อินดัสเตรียล อิเล็กทรอนิคส์ ขอแนะนำสำหรับคุณ 39:05 พลังงานทดแทน Sompong Tungmepol ดู 1,184 ครั้ง 14:50 การสร้างอินเวอร์เตอร์คอนเวอร์เตอร์รุ่นพัฒนาแล้วภาคปฎิบัติ Sompong Tungmepol ดู 1,107 ครั้ง 21:28 จิตสงบเพราะว่าอะไร เพราะว่าชำนาญในการรู้ทันจิตที่เคลื่อน พอรู้ทันจิตที่เคลื่อนปุ๊บ จิตก็ตั้งมั่นเลย สมพงศ์ อินดัสเตรียล อิเล็กทรอนิคส์ ขอแนะนำสำหรับคุณ 55:49 ดูคลิป Sompong Tungmepol ดู 3,020 ครั้ง 16:31 การสร้างเครื่อง ปรับรอบ ความเร็วมอเตอร์มอเตอร์ไฟฟ้า สามเฟส Sompong Tungmepol ดู 479 ครั้ง 4:17 เมื่อปล่อยวางจิตจิตจะทวนกระแสเข้าหาธาตุรู้ถึงโคตรภูญาณแล้วอริยมรรคก็จะเกิดขึ้น Sompong Tungmepol ขอแนะนำสำหรับคุณ 24:18 วิธีซ่อมอินเวอร์เตอร์ ตอนที 1 Sompong Tungmepol ดู 2,217 ครั้ง 9:54 การสร้าง Pure Sine Inverter แบบ PWM Sompong Tungmepol ดู 106 ครั้ง 9:46 การพิจารณาร่างกาย Sompong Tungmepol ขอแนะนำสำหรับคุณ 31:18 ขายอะไหล่ แอร์ อินเวอร์เตอร์ อะไหล่ตู้เชื่อม อินเวอร์เตอร์ Sompong Tungmepol ดู 493 ครั้ง 3:06 นิวรณ์ สมพงศ์ อินดัสเตรียล อิเล็กทรอนิคส์ ขอแนะนำสำหรับคุณ 39:05 inverter pure sine wave อินเวอร์เตอร์ เพียวซายน์ Sompong Tungmepol ดู 591 ครั้ง 9:18 สาวตาคม เด็กราชภัฏภูเก็ต Pookpik Ja - Bigo Live Thailand. Follow: @Nupookpik2759 YouLike Clip ขอแนะนำสำหรับคุณใหม่ 3:41 คนหลงยุค อินเวอร์เตอร์คอนเวอร์เตอร์วงจรและการทดลอง Sompong Tungmepol ดู 4,844 ครั้ง 13:00 variable frequency 3 phase AC induction motor V/F Motor (Voltage/Frequency Motor) Sompong Tungmepol ดู 388 ครั้ง 5:24 การสร้างอินเวอร์เตอร์สามเฟสแบบใหม่ ใช้ได้กับมอเตอร์ขนาดเล็กไม่เกินสามแรงม้า Sompong Tungmepol ดู 701 ครั้ง 5:16

ไม่มีความคิดเห็น:

แสดงความคิดเห็น