วันเสาร์ที่ 16 ธันวาคม พ.ศ. 2560

แอร์ตู้เย็นเครื่องซักผ้ารุ่นใหม่ใช้อินเวอร์เตอร์ควบคุมมอเตอร์อินดัตชั่นส...



แอร์ตู้เย็นเครื่องซักผ้ารุ่นใหม่ใช้อินเวอร์เตอร์ควบคุมมอเตอร์อินดัตชั่นสามเฟส

ดู 23,941 ครั้ง
เผยแพร่เมื่อ 3 พ.ค. 2014
วิธีสร้างอินเวอร์เตอร์แอร์ อินเวอร์เตอร์ ตู้เย็น อินเวอร์เตอร์ เศรษฐกิจดี สังคมไม่มีปัญหา การพัฒนายั่งยืน ไม่ใช้ฟืน ไม่ใช้น้ำมัน ไม่ใช้แก๊ส ไม่ทำลาย ธรรมชาติ ...ใช้แทน...เครื่องจักร...ที่ สันดาป..ภายใน...เนื่องจากใช้ไฟฟ้าเพียง 48 โวลต์ หรือ แบตเตอรี่รถยนต์ 4 ลูก สามารถ ขับเคลื่อน มอเตอร์ สามเฟส ได้ 1 แรงม้า เร่ง และลด ความเร็วได้ ดู รายละเอียด จากคลิป ได้ครับ..โชคดี มีความสุข ปลอดภัย สบายกาย สบายใจ ทุกท่าน...ครับ. ราคา ประมาณ 2000-3000 บาท ไม่รวมแบตเตอรี่ และมอเตอร์ ครับ...กันไว้ดีกว่า..แก้..แย่แล้ว แก้ไม่ทัน..ปลอดภัยไว้ก่อน..ดีกว่า..ครับ..https://www.youtube.com/watch?v=zNyOW...
https://www.youtube.com/watch?v=tv5Rs... https://www.youtube.com/watch?v=2t3Ox... https://www.youtube.com/watch?v=L_faX... https://www.youtube.com/watch?v=ZgzGk... https://www.youtube.com/watch?v=w_Yex... https://www.youtube.com/watch?v=lpthW... อุปกรณ์ เพาเวอร์ อิเล็กทรอนิกส์ เพาเวอร์โมดูล SEMIKRON SEMIX 241 MD008s ราคาตัวละ 1500 บาท ใช้สำหรับสร้าง เครื่อง อินเวอร์เตอร์ คอนเวอร์เตอร์ ชนิดแรงดันต่ำ กระแสสูง ขนาด 6x250 AMPS 75 VOLTS ร้านแก้ไขซ่อมสร้างแผงวงจรอิเล็กทรอนิกส์และแผงวงจร ควบคุม โรงงาน อุตสาหกรรม 69/6 ซอยปิ่นประภาคม 3 ติวานนท์ 18 อำเภอเมืองนนทบุรี จังหวัดนนทบุรี ระหัสไปรษณีย์ 11000 โทรศัพท์ 029511356
การสร้างอินเวอร์เตอร์สามเฟสแบบใหม่ ใช้ได้กับมอเตอร์ขนาดเล็กไม่เกินสามแรงม้า
Sompong Tungmepol
Sompong Tungmepol
ติดตามแล้ว45K
เพิ่มลงใน แชร์ เพิ่มเติม
ดู 2,157 ครั้ง
15 0
เผยแพร่เมื่อ 22 ต.ค. 2016
การต่อ ATmega 328 P ให้ใช้ R 330 -560 โอมห์ ต่อ กับ PC817 สามตำแหน่ง เฉพาะ ด้าน HIGH SIDE คือ D6 PIN 12 D9 PIN 15 D11 PIN 17 หรือ ด้าน LOW SIDE คือ D5 PIN 11 D10 PIN16 D3 PIN5 ก็พอ ไม่ต้องต่อ 6 ตำแหน่ง เพราะ L6569 หรือ IR 2153 1 ตัว จะเป้น ตัว ขับ IGBT 2 ตัว
รายละเอียดดูภาพและฟังเสียงจากคลิปนี้ประกอบด้วยก็ดีครับ ง่ายครับ...
รับออกแบบและเขียนโปรแกรม ควบคุม ด้วย INTEL MCS 51 STMICRO STM 8 STM32 ATMEL ATMEGA 168 ATMEGA 328 P ARDUINO PIC MICROCHIP และ Microcontroller เบอร์อื่น ติดต่อที่
Sompong industrial Electronics sompongindustrial@gmail.com
mrsompongt@hotmail.com Line 081-803-6553
02-045-3653 อำเภอเมือง นนทบุรี 11000 Thailand
การสร้างอินเวอร์เตอร์สามเฟสแบบใหม่ 3 เฟสอินเวอร์เตอร์มอเตอร์ขนาดเล็กรวมคลิปการเปลี่ยนพลังงานและประหยัดพลังงาน การสร้างเครื่อง ปรับรอบ ความเร็วมอเตอร์มอเตอร์ไฟฟ้า สามเฟส ใช้ไฟฟ้ากระแสลับ เฟสเดียว ใช้ไฟฟ้ากระแสตรง จากแบตเตอรี่ โดยใช้เทคโนโลยี ไมโครคอนโทรลเลอร์ ATMEL Atmega และ Arduino จำหน่าย Power Module และ โปรแกรม Arduino ให้เป็น อินเวอร์เตอร์ สามเฟส ได้รับความอนุเคราะห์ โค๊ด จากท่าน Tomasz Drazek ประเทศโปแลนด์ 3 Phase Motor Control Code Arduino 328 P Thank you very much, sir โค๊ด และวงจร อยู่นี่ครับ https://onedrive.live.com/?authkey=%2... hank you very much, sir
https://onedrive.live.com/?authkey=%2... รุ่นใหม่ ราคา1000 บาท ครับ นำไปบัดกรีและต่อเติมตามถนัดครับ..มี บอร์ด Arduino 1 บอร์ด ราคา 700 บาท และ PS21244 1 หรือ PS21963 หรือ PS219A2 ราคา ตัวละ 300 บาท ครับ ลงวันที่ 14 ตุลาคม 2559 จำหน่าย POWER MODULE 6DI15s-050 MP6501A TM51 PS21244 PS21963 GT15J331 ใช้สำหรับ สร้าง อินเวอร์เตอร์ คอนเวอร์เตอร์ สามเฟส ที่ใช้ใน เครื่องปรับอากาศ ตู้เย็น เครื่องซักผ้า เครื่องใช้ไฟฟ้า ที่มีมอเตอร์ ชนิดสามเฟส ติดต่อที่ LINE pornpimon 1411 Intelligent power module PS21244 มีจำหน่าย ราคาตัวละ 300 บาท NEW MODULE 6DI15S-050 FUJI LOCATION M in Business & Industrial, Electrical & Test Equipment, Industrial Automation, Control มีจำหน่ายราคาตัวละ 300 บาท TM52A สินค้าหมดแล้วครับ....https://www..com/watch?v=fpP69G42wok ดูรายละเอียดจากคลิป ง่ายกว่าครับ มีหลายคลิป เบื้องต้นทำสัญญาน 6 ตำแหน่งให้ ต่ำกว่า 0.5 Volt ครับ ค่า R PULL UP ใช้ 5.6 K-10K จะพอดีครับ ไฟเลี้ยง ต้องเรียบพอ ไม่ต่ำกว่า 15 Vdc ครับ รายละเอียดการต่อ PS21244 กับ MC3PHACแบบขนานและแบบธรรมดา...ชมการทดสอบจริงกับมอเตอร์ ห้าแรงไม่มีโหลด จากคลิปนี้ก็ได้ครับ...วงจรขนานที่ใช้ MOSFET STU 418 ยังใช้ไม่ได้..ไม่สมบูรณ์..ครับ...ยังไม่ได้ผลที่น่าพอใจhttps://www..com/watch?v=yXZhTqUhXqA
TM52A...หมดแล้ว.ใช้ PS21244 ขนานกัน....ได้ครับ....ขาย ic หาง่าย ใช้ง่าย PS21244 PS21963 PS219A2 6DI15S-050 D 6DI15S-050 C MP6501A TM52A TM51 ใช้ทำเครื่องอินเวอร์เตอร์ เครื่องปรับรอบมอเตอร์ เครื่องแปลงไฟฟ้า PS21244 ราคาตัวละ 300 บาท 4 ตัว 1000 บาท ครับค่าส่ง Ems 100 บาท ครับ Line:pornpimon 1411 มือถือ 081-803-6553 เบอร์บ้าน 02-951-1356 sompongindustrial@gmail.com mrsompongt@hotmail.com
https://www..com/watch?v=TYuLuP31QOw
https://www..com/watch?v=yuMdz3fqhtg
https://www..com/watch?v=ThGs-s99_J0
https://www..com/watch?v=bd97PM3v66A
จำหน่าย ออกแบบ ซ่อม สร้าง อินเวอร์เตอร์ เครื่องควบคุมมอเตอร์ อินดัตชั่น สามเฟส
จำหน่าย power module ขนาด 15 Amps 400 Volts ราคาตัวละ 300 บาท สำหรับ ใช้กับมอเตอร์ ไฟฟ้า ยุคใหม่ ทั้ง DC และ AC ได้ 1 แรงม้า
sompongindustrial@gmail.com
02-045-3653 Line 081-803-6553 pornpimon 1411
มือถือ 081-803-6553
Sompong Tungmepol
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define UN (400.0) //napiecie znamionowe silnika
#define FN (50.0) //czestotliwosc znamionowa silnika
#define P (UN/FN) //wsp. okreslajacy proporcje napiecia do czestotliwoci znamionowej
#define T_PWM (0.000255) //okres sygnalu PWM - ustawiony przez preskaler w licznikach
#define T_MAX (4.0) //okreslenie maksymalnego okresu napiecia wyjsciowego
#define T_MIN (0.02) //minimalny okres napiecia wyjsciowego
#define K_MAX floor(T_MAX/T_PWM) //liczba wartosci okresu dla T_MAX
#define K_MIN ceil(T_MIN/T_PWM) //liczba wartosci okresu dla T_MIN

volatile static unsigned int dlugosc_tab_sin; //zmienna zawierajaca liczbe wartosci w pelnym
//okresie napiecia wyjsciowego
static unsigned int i = 0; //zmienna pomocniacza
volatile static unsigned int licznik_glowny = 0;//zmienna wystepujaca w przerwaniu czyklicznie
//^ co okres T_PWM zwiekszajaca swoja wartosc o 1
static unsigned int next_value_sin = 0; //zmienna ktora wartosc sin nalezy obliczyc
static double t_param=100; //parametr okreslajacy okres napiecia wyjsciowego
static float t = T_PWM; //T_PWM
static float omega_t; //pulsacja napiecia wyjsciowego pomnozona przez T_PWM
static float t_out; //okres wyjsciowy napiecia
static float U_o_param; //parametr okreslajacy wielkosc napiecie wyjsciowego
//^ obliczony na podstawie t_out i U_in
static unsigned int ocr0a, ocr0b, ocr1a;//zmienne pomocnicze do przechowywania obl. wypelnien
static unsigned int ocr1b, ocr2a, ocr2b;//^
static unsigned int ocr3a, ocr3b, ocr3c;//zmienne pomocnicze do przechowywania obl. wypelnien
static unsigned int ocr4a, ocr4b, ocr4c;//
static unsigned int ocr5a, ocr5b, ocr5c;//^
static double sin_in; //zmienna zawierajaca parametr funkcji sin
static double blad = 1; //zmienna uzyta do zatrzymania generowania napiecia przy przeciazeniu
static unsigned int analog=0; //zmienna zawierajaca zmierzona wartosc
static double U_in = 0; //zmienna przechowuj¹ca pomiar napiecia ukladu posredniczacego
static double U_rms_max; //maksymalna aktualnie mozliwa do generacji wartosc skuteczna napiecia
static bool a=0; //zmienna logiczna do realizacji dwoch naprzemiennych pomiarow
int main()
{
io_init(); //inicjalizacja wejsc i wyjsc
timers_init(); //inicjalizacja licznikow PWM
adc_init(); //inicjalizacja przetwornika ADC
while(1) //nieskonczona petla z programem glownym
{
if(i==185) //warunek okreslajacy wejscie do funkcji zmiany
{ //parametrow napiecia wysjciowego, wywolanie co okolo 100ms
zmien_predkosc(); //funkcja zmiany parametrow napiecia wyjsciowego
i=0;
}
next_value_sin = licznik_glowny%dlugosc_tab_sin; //kolejna wartoϾ sinusa do obliczenia
sin_in=omega_t*next_value_sin;

/*obliczenie wartosci do rejestrow okreslajacych wypelnienie sygnalu wyjscioweg*/
ocr0a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin 6
ocr0b = ocr0a-1;
ocr1a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin 9
ocr1b = ocr1a-1;
ocr2a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin 11
ocr2b = ocr2a-1;

ocr3a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin 6
ocr3b = ocr0a - 1;
ocr4a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin 3
ocr4b = ocr4a - 1;
ocr5a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin 11
ocr5b = ocr5a - 1;

ocr3c = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);
ocr4c = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin 11
ocr5c = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin 11

/*uaktualnienie wartosci w rejestrach*/
cli(); //zabronienie na obsloge przerwan na wypadek gdyby
//podczas uaktualniania wystapilo przerwanie
OCR0A = ocr0a; //pin 6
OCR0B = ocr0b; //pin 5
OCR1AL = ocr1a; //pin 9
OCR1BL = ocr1b; //pin 10
OCR2A = ocr2a; //pin 11
OCR2B = ocr2b; //pin 3

OCR3A = ocr3a; //pin 6
OCR3B = ocr3b; //pin 5
OCR3C = ocr3c; //pin 3
OCR4A = ocr4a; //pin 10
OCR4B = ocr4b; //pin 11
OCR4C = ocr4c; //pin 8

OCR5A = ocr5a; //pin 10
OCR5B = ocr5b; //pin 11
OCR5C = ocr5c; //pin 8

sei(); //zezwolenie na obsloge przerwan
i++;
}
}
void adc_init()
{
ADCSRA |= _BV(ADEN);//uruchomienie przetwornika
ADCSRA |= _BV(ADPS2);//ustawienie preskalera
ADCSRA |= _BV(ADPS1);//^
ADCSRA |= _BV(ADPS0);//^
ADMUX |= _BV(REFS0);// napiecie odniesienia ustawione jako napiecie zasilania
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru
}
void timers_init()
{
cli(); // obsloga przerwan zabroniona
//timer0 init
TCCR0A |= _BV(COM0A1) | _BV(COM0B0) | _BV(COM0B1) | _BV(WGM00);
TCCR0B |= _BV(CS01)|1<< (CS00); //preskaler 8
TIMSK0 |= _BV(TOIE0); //flaga od wartosci 0 wlaczona
//timer1 init
TCCR1A |= _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1) | _BV(WGM10);
TCCR1B |= _BV(CS11)|1<< (CS10); //preskaler 8
//timer2 init
TCCR2A |= _BV(COM2A1) | _BV(COM2B0) | _BV(COM2B1) | _BV(WGM20);
TCCR2B |= _BV(CS22); //preskaler 8

//timer3 init
TCCR3A |= _BV(COM3A1) | _BV(COM3B0) | _BV(COM3B1) | _BV(WGM30);
TCCR3B |= _BV(CS31)|1<< (CS30);
TCCR3C |= _BV(CS31)|1<< (CS30);
//TCCR3C |= _BV(CS31);//;|(1 << CS00); //preskaler 8

cbi (TCCR3A, COM3C0);
sbi (TCCR3A, COM3C1);



//timer4 init
TCCR4A |= _BV(COM4A1) | _BV(COM4B0) | _BV(COM4B1) | _BV(WGM40);
TCCR4B |= _BV(CS41)|1<< (CS40);
TCCR4C |= _BV(CS41)|1<< (CS40);

cbi (TCCR4A, COM4C0);
sbi (TCCR4A, COM4C1); //preskaler 8



//timer5 init
TCCR5A |= _BV(COM5A1) | _BV(COM5B0) | _BV(COM5B1) | _BV(WGM50);
TCCR5B |= _BV(CS51)|1<< (CS50); //preskaler 8
TCCR5C |= _BV(CS51)|1<< (CS50);

cbi (TCCR5A, COM5C0);
sbi (TCCR5A, COM5C1);
//zerowanie wartosci liczników
TCNT0 = 0;
TCNT1L = 0;
TCNT2 = 0;

TCNT3 = 0;
TCNT4 = 0;
TCNT5 = 0;
/* licznik zlicza w góre do 255, nastepnie w dó³: /\/\/\
przy wartosci 255 jest przerwanie przy ktorym dokonuje sie
pomiarow napiec i pradow
*/
sei(); //zezwolenie na obsloge przerwan
}
void io_init()
{
pinMode(6, OUTPUT); //OC0A
pinMode(5, OUTPUT); //OC0B
pinMode(9, OUTPUT); //OC1A
pinMode(10, OUTPUT);//OC1B
pinMode(11, OUTPUT);//OC2A
pinMode(3, OUTPUT); //OC2B
pinMode(44, OUTPUT);
pinMode(45, OUTPUT);
pinMode(46, OUTPUT);
pinMode(53, INPUT);
pinMode(52, INPUT);
pinMode(53, INPUT);
pinMode(50, OUTPUT);

pinMode(2, OUTPUT); //OC0A
pinMode(4, OUTPUT); //OC0B
pinMode(7, OUTPUT); //OC1A
pinMode(8, OUTPUT);//OC1B
pinMode(12, OUTPUT);//OC2A
pinMode(13, OUTPUT); //OC2B

}
ISR(TIMER0_OVF_vect) //przerwanie przy wartosci 0 licznika0
{
analog = ADC;
if(a)
{
U_in = 0.0709*analog;
ADMUX |= _BV(MUX0); //wybranie wejscia ADC1 do pomiaru pradu
}
else
{
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru napiecia
if(analog>579)
{
blad = 0; //jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(50, HIGH); //zapalenie diody
}
}
ADCSRA |= _BV(ADSC);//start odczytywania pomiaru
a=a^1; //bramka XOR neguje wartosc logiczna a
licznik_glowny++;
if(licznik_glowny>=dlugosc_tab_sin) licznik_glowny = 0;
}
void zmien_predkosc()
{
U_rms_max = U_in*0.62; //wartosc 0.62 wyzanczona eksperymentalnie
bool up; //zmienna logiczna, informuje o nacisnietym przycisku zwieksz czestotliwosc
bool down; //zmienna logiczna, informuje o nacisnietym przycisku zmiejsz czestotliwosc
up = digitalRead(52); //odczyt: czy nacisniety przycisk zwieksz czestotliwosc
down = digitalRead(53); //odczyt: czy nacisniety przycisk zmiejsz czestotliwosc
t_param=map(analogRead(3),0,1023,0,100);
if(up==1) t_param--; //jezeli nacisniety przycisk zwieksz czestotliwosc to zmiejsz okres
if(down==1) t_param++; //jezeli nacisniety przycisk zmniejsz czestotliwosc to zwieksz okres
if(t_param<0) t_param=0; //zabezpieczenie przekroczenia wartosci skrajnych
if(t_param>100) t_param=100;//^
dlugosc_tab_sin = ceil((K_MAX-K_MIN)*t_param/100+K_MIN);//ilosc wartosci wypelnien w jednym okresie
t_out = T_PWM*dlugosc_tab_sin; //obliczenie okresu napiecia wyjsciowego
omega_t = t*2*PI/t_out; //obliczenie pulsacji napiecia wyjsciowego
U_o_param = (P/t_out)/U_rms_max; //obliczenie parametru okreslajacego wielkosc napiecia wyjsciowego
if(t_out>1) U_o_param = 0.5*(18.5/U_rms_max); //napiêcie na wyjsciu przy niskiej czestotliwosci 10V
if(U_o_param>1) U_o_param=1; //zabezpieczenie przekroczenia wartosci skrajnych
blad = 1; //jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(50, LOW);
}
Sompong Tungmepol
 
เครื่องปรับอากาศตู้เย็นเครื่องซักผ้ารวมทั้งเครื่องใช้ที่มีมอเตอร์สามเฟสและอินเวอร์เตอร์เป็นเทคโนโลยีที่ได้พัฒนาขึ้นเพื่อลดการใช้พลังงานไฟฟ้าประมาณ 30-40 % จากเครื่องธรรมดาซึ่งหลักการทำงานจะแตกต่างที่ตัวมอเตอร์และชุดควบคุมโดยใช้ทรานซิสเตอร์เพาเวอร์โมดูล Transistor Power Module มอสเฟท เพาเวอร์โมดูล  Mosfet Power Module ไอจีบีที เพาเวอร์โมดูล Igbt Power Module
Sangvian Suwan
ผมยากได้ อินเวอร์เตอร์ สามเฟตใช้สองได้ ไปขับมอเตอร์สามเฟต 1.5แรง ใช้แผงโซล่าเซลล์ ที่ท่านเคยลงยูทูป ที่ใช้ได้ตั้งแต่หนึ่งแผง280w ขอราคาจะได้ไหม ต้องสั่งทำใช่ไหมครับ ขอบคุณ
Sompong Tungmepol
ในปัจจุบันเราทุกคนต่างประสบกับปัญหาพลังงาน ราคาแพง ซึ่งสาเหตุหลักมาจากราคา น้ำมันซึ่งปรับตัวสูงขึ้นมากๆ ทำให้ไม่ว่าจะเป็นไฟฟ้าก็ปรับค่าไฟขึ้นและค่าไฟก็เป็นต้นทุน หลักตัวหนึ่งในโรงงานอุตสาหกรรม โรงแรม อาคารสำนักงาน และห้างสรรพสินค้าต่างๆ ดังนั้น การใช้พลังงานอย่างมีประสิทธิภาพอย่างคุ้มค่าอย่างประหยัดก็จะเป็นการลดต้น ทุน การดำเนินงานได้  ในโรงแรมขนาดใหญ่ อาคารสำนักงาน ห้างสรรพสินค้า และในหลายอุตสาหกรรม เช่น โรงทอผ้า อาหาร อิเลคทรอนิกส์ ที่มีการใช้ระบบเกี่ยวกับความร้อน การระบายอากาศ เครื่องทำความเย็น ระบบปรับอากาศ การใช้น้ำ การรักษาความดันอากาศหรือน้ำ ในระบบเหล่านี้มักจะมีอุปกรณ์ที่ใช้ที่สำคัญ คือ พัดลม และ ปั้มน้ำ โดยใช้มอเตอร์เป็นตัวขับ  ดังนั้น ถ้าเรามองถึงการประหยัดพลังงานก็ต้องมุ่งไปที่ว่า ทำอย่างไรถึงจะใช้มอเตอร์ไฟฟ้า ขับ เครื่องจักรกล ปั้มน้ำ พัดลม  และ เครื่องมือ เครื่องใช้ไฟฟ้า อย่างมีประสิทธิภาพสูงสุดและประหยัดสุด
Sompong Tungmepol
PS21244  6di15s-050 mp6501a ใช้ขับมอเตอร์..ที่โหลด..กระตุก..กระตุก..เช่น...ปั้มชักไม่ได้ ครับ....ใช้ได้ กับ ปั๊ม แบบ หอยโข่ง จะใช้งานได้ดีครับ..
Sompong Tungmepol
//ตัวที่ใช้แทน MC3PHAC จะเป็น ATmega 168 ATmega 328 P โปรแกรม ด้วย Arduino //version 1.0.1 - 1.0.6 โค๊ด อยู่ที่นี่ครับ
#define UN (400.0) //napiecie znamionowe silnika
#define FN (50.0) //czestotliwosc znamionowa silnika
#define P (UN/FN) //wsp. okreslajacy proporcje napiecia do czestotliwoci znamionowej
#define T_PWM (0.000255) //okres sygnalu PWM - ustawiony przez preskaler w licznikach
#define T_MAX (4.0) //okreslenie maksymalnego okresu napiecia wyjsciowego
#define T_MIN (0.02) //minimalny okres napiecia wyjsciowego
#define K_MAX floor(T_MAX/T_PWM) //liczba wartosci okresu dla T_MAX
#define K_MIN ceil(T_MIN/T_PWM) //liczba wartosci okresu dla T_MIN

volatile static unsigned int dlugosc_tab_sin; //zmienna zawierajaca liczbe wartosci w pelnym
//okresie napiecia wyjsciowego
static unsigned int i = 0; //zmienna pomocniacza
volatile static unsigned int licznik_glowny = 0;//zmienna wystepujaca w przerwaniu czyklicznie
//^ co okres T_PWM zwiekszajaca swoja wartosc o 1
static unsigned int next_value_sin = 0; //zmienna ktora wartosc sin nalezy obliczyc
static double t_param=100; //parametr okreslajacy okres napiecia wyjsciowego
static float t = T_PWM; //T_PWM
static float omega_t; //pulsacja napiecia wyjsciowego pomnozona przez T_PWM
static float t_out; //okres wyjsciowy napiecia
static float U_o_param; //parametr okreslajacy wielkosc napiecie wyjsciowego
//^ obliczony na podstawie t_out i U_in
static unsigned int ocr0a, ocr0b, ocr1a;//zmienne pomocnicze do przechowywania obl. wypelnien
static unsigned int ocr1b, ocr2a, ocr2b;//^
static double sin_in; //zmienna zawierajaca parametr funkcji sin
static double blad = 1; //zmienna uzyta do zatrzymania generowania napiecia przy przeciazeniu
static unsigned int analog=0; //zmienna zawierajaca zmierzona wartosc
static double U_in = 0; //zmienna przechowujนca pomiar napiecia ukladu posredniczacego
static double U_rms_max; //maksymalna aktualnie mozliwa do generacji wartosc skuteczna napiecia
static bool a=0; //zmienna logiczna do realizacji dwoch naprzemiennych pomiarow
int main()
{
io_init(); //inicjalizacja wejsc i wyjsc
timers_init(); //inicjalizacja licznikow PWM
adc_init(); //inicjalizacja przetwornika ADC
while(1) //nieskonczona petla z programem glownym
{
if(i==185) //warunek okreslajacy wejscie do funkcji zmiany
{ //parametrow napiecia wysjciowego, wywolanie co okolo 100ms
zmien_predkosc(); //funkcja zmiany parametrow napiecia wyjsciowego
i=0;
}
next_value_sin = licznik_glowny%dlugosc_tab_sin; //kolejna wartoœๆ sinusa do obliczenia
sin_in=omega_t*next_value_sin;

/obliczenie wartosci do rejestrow okreslajacych wypelnienie sygnalu wyjscioweg/
ocr0a = round(blad*(U_o_param*(sin(sin_in)+1)*254/2)+1);//pin 6
ocr0b = ocr0a - 1;
ocr1a = round(blad*(U_o_param*(sin(sin_in-2.09)+1)*254/2)+1);//pin 9
ocr1b = ocr1a - 1;
ocr2a = round(blad*(U_o_param*(sin(sin_in+2.09)+1)*254/2)+1);//pin 11
ocr2b = ocr2a - 1;

/uaktualnienie wartosci w rejestrach/
cli(); //zabronienie na obsloge przerwan na wypadek gdyby
//podczas uaktualniania wystapilo przerwanie
OCR0A = ocr0a; //pin 6
OCR0B = ocr0b; //pin 5
OCR1AL = ocr1a; //pin 9
OCR1BL = ocr1b; //pin 10
OCR2A = ocr2a; //pin 11
OCR2B = ocr2b; //pin 3
sei(); //zezwolenie na obsloge przerwan
i++;
}
}
void adc_init()
{
ADCSRA |= _BV(ADEN);//uruchomienie przetwornika
ADCSRA |= _BV(ADPS2);//ustawienie preskalera
ADCSRA |= _BV(ADPS1);//^
ADCSRA |= _BV(ADPS0);//^
ADMUX |= _BV(REFS0);// napiecie odniesienia ustawione jako napiecie zasilania
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru
}
void timers_init()
{
cli(); // obsloga przerwan zabroniona
//timer0 init
TCCR0A |= _BV(COM0A1) | _BV(COM0B0) | _BV(COM0B1) | _BV(WGM00);
TCCR0B |= _BV(CS01); //preskaler 8
TIMSK0 |= _BV(TOIE0); //flaga od wartosci 0 wlaczona
//timer1 init
TCCR1A |= _BV(COM1A1) | _BV(COM1B0) | _BV(COM1B1) | _BV(WGM10);
TCCR1B |= _BV(CS11); //preskaler 8
//timer2 init
TCCR2A |= _BV(COM2A1) | _BV(COM2B0) | _BV(COM2B1) | _BV(WGM20);
TCCR2B |= _BV(CS21); //preskaler 8
//zerowanie wartosci licznik๓w
TCNT0 = 0;
TCNT1L = 0;
TCNT2 = 0;
/* licznik zlicza w g๓re do 255, nastepnie w d๓ณ: /\/\/\
przy wartosci 255 jest przerwanie przy ktorym dokonuje sie
pomiarow napiec i pradow
*/
sei(); //zezwolenie na obsloge przerwan
}
void io_init()
{
pinMode(6, OUTPUT); //OC0A
pinMode(5, OUTPUT); //OC0B
pinMode(9, OUTPUT); //OC1A
pinMode(10, OUTPUT);//OC1B
pinMode(11, OUTPUT);//OC2A
pinMode(3, OUTPUT); //OC2B
pinMode(2, INPUT);
pinMode(4, INPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
ISR(TIMER0_OVF_vect) //przerwanie przy wartosci 0 licznika0
{
analog = ADC;
if(a)
{
U_in = 0.0709*analog;
ADMUX |= _BV(MUX0); //wybranie wejscia ADC1 do pomiaru pradu
}
else
{
ADMUX |= ADMUX &= 0b11110000; //wybranie wejscia ADC0 do pomiaru napiecia
if(analog>579)
{
blad = 0; //jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(12, HIGH); //zapalenie diody
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);

}
}
ADCSRA |= _BV(ADSC);//start odczytywania pomiaru
a=a^1; //bramka XOR neguje wartosc logiczna a
licznik_glowny++;
if(licznik_glowny>=dlugosc_tab_sin) licznik_glowny = 0;
}
void zmien_predkosc()
{
t_param = map(analogRead(3),0,1023,0,100);
U_rms_max = U_in*0.62; //wartosc 0.62 wyzanczona eksperymentalnie
bool up; //zmienna logiczna, informuje o nacisnietym przycisku zwieksz czestotliwosc
bool down; //zmienna logiczna, informuje o nacisnietym przycisku zmiejsz czestotliwosc
up = digitalRead(4); //odczyt: czy nacisniety przycisk zwieksz czestotliwosc
down = digitalRead(2); //odczyt: czy nacisniety przycisk zmiejsz czestotliwosc
if(up==1) t_param--; //jezeli nacisniety przycisk zwieksz czestotliwosc to zmiejsz okres
if(down==1) t_param++; //jezeli nacisniety przycisk zmniejsz czestotliwosc to zwieksz okres
if(t_param<0) t_param=0; //zabezpieczenie przekroczenia wartosci skrajnych
if(t_param>100) t_param=100;//^
dlugosc_tab_sin = ceil((K_MAX-K_MIN)*t_param/500+K_MIN);//ilosc wartosci wypelnien w jednym okresie
t_out = T_PWM*dlugosc_tab_sin; //obliczenie okresu napiecia wyjsciowego
omega_t = t*2*PI/t_out; //obliczenie pulsacji napiecia wyjsciowego
U_o_param = (P/t_out)/U_rms_max; //obliczenie parametru okreslajacego wielkosc napiecia wyjsciowego
if(t_out>1) U_o_param = 0.5*(18.5/U_rms_max); //napi๊cie na wyjsciu przy niskiej czestotliwosci 10V
if(U_o_param>1) U_o_param=1; //zabezpieczenie przekroczenia wartosci skrajnych
blad = 1; //jezeli przeciazenie wylaczenie generacji napiecia
//digitalWrite(13, HIGH); //zapalenie diody
//jezeli przeciazenie wylaczenie generacji napiecia
digitalWrite(12, LOW); //zapalenie diody
}
Sompong Tungmepol
ยินดีและขอบพระคุณทุกท่าน.มากครับ สำหรับ ปี 2559 มี อุปกรณ์ ที่จำหน่าย คือTOSHIBA POWER GT15J331 ราคา ตัวละ 300 บาท 4 ตัว ราคา ตัวละ 250 บาทครับ บอร์ด drive l6569 บอร์ดละ 100 บาท แกนเฟอไรท์ มีหลาย ขนาดที่ใหญ่สุดที่มีเป็นขนาดเส้นผ่าศูนย์ก­ลาง 5 นิ้ว ราคา 400 บาท ครับ TOSHIBA Insulated Gate Bipolar Transistor Silicon N Channel IGBT GT15J331High Power Switching ApplicationsMotor Control Applications The 4th Generation Enhancement-Mode High Speed: tf = 0.10 µs (typ.) Low Saturation Voltage: VCE (sat) = 1.75 V (typ.)
FRD included between Emitter and collector.Maximum Ratings (Ta 25°C)Characteristic Symbol Rating UnitCollector-emitter voltage VCES 600 VGate-emitter voltage VGES 20 VDC IC 15Collector current
1 ms ICP 30ADC IF 15 A Emitter-collector forward current 1 ms IFM 30 WCollector power dissipation(Tc 25°C) PC 70 WJunction temperature Tj 150 °CStorage temperature range Tstg 55~150 °C
Equiท่านที่ส่งงานให้ผมซ่อมให้ส่งเฉพาะแผง­วงจร..มาทางไปรษณีย์...ติดต่อที่ 02-951-1356 มือถือ 081-803-6553 LINE IDคือ pornpimon1411 ครับ...email mrsompongt@hotmail.com sompongindustrial@gmail.comส่ง สมพงค์ ทุ่งมีผล 69/6 ซอยปิ่นประภาคม 3 ติวานนท์ 18 แยก 5 ถนนติวานนท์ ตำบลตลาดขวัญ อำเภอเมือง จังหวัดนนทบุรี 11000
จำหน่าย Mosfet 2SK2698 2SK2611 TOSHIBA JAPAN แท้ ราคา ตัวละ 35 บาท 3 ตัว 100 บาท สำหรับ ท่านที่ทำงาน ซ่อม ตู้เชื่อม อินเวอร์เตอร์ ครับ..
จำหน่าย TLP3506 TOSHIBA Photocoupler GaAs Ired & Photo-Triac TLP3506 Triac Driver Programmable Controllers. ทีีใช้ในเครื่องซักผ้า ราคาตัวละ 30 บาทครับ...ใช้แทน R23MF1 ไดัครับ.
จำหน่าย Power Module PS21244 PS21963 PS219A2 6DI15S-050 ราคาตัวละ 300 บาท ใช้สำหรับ สร้าง ซ่อม อินเวอร์เตอร์ สามเฟส. เครื่องควบคุมความเร็วมอเตอร์สามเฟสแบบอิน­เวอร์เตอร์ (Inverter) สามารถควบคุมความเร็ว (Speed) ได้ตั้งแต่ศูนย์จนถึงความเร็วตามพิกัดของม­อเตอร์ นิยมใช้กันมาก ในเครื่องใช้ไฟฟ้าที่มีมอเตอร์ ยุคปัจจุบัน เช่น แอร์อินเวอร์เตอร์ ตู้เย็น อินเวอร์เตอร์ เครื่องซักผ้า อินเวอร์เตอร์ ปั๊มน้ำ อินเวอร์เตอร์ เครื่อง สูบน้ำ อินเวอร์เตอร์ รถ จักรยาน ไฟฟ้า รถยนต์ไฟฟ้า เรือไฟฟ้า ยานพาหนะ ในยุคปัจจุบันและอนาคต ล้วนต้องใช้ อินเวอร์เตอร์
หมวดหมู่
การศึกษา

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

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