Nguyên văn bởi thanhfdc
Xem bài viết
Thông báo
Collapse
No announcement yet.
TỰ LÀM 600W PURESINE INVERTER 12VDC - 220VAC (Mở lại chủ đề của thanhfdc bị xóa nhầm)
Collapse
This is a sticky topic.
X
X
-
hì cảm ơm bạn. mình cũng đoan đoán nó là biến áp từ atx nhưng k chắc nên hỏi lại. bạn thanhfdc có biết chỗ nào mua lõi chuẩn không. mình đang muốn quấn thử cái biến áp để làm lại phần dc dc. giờ đang dùng của bo santak nhưng nó sụt áp ảo quá. để 0 tải lên 400v mà có tải cái xuống 290 ngay. nhẽ ra thì k tải hay có tải nó phải giữ dc ở 1 mức chứ vì phần dc dc của nó cũng có phản hồi rồi mà
-
như vậy mà mạch bạn chạy có vẻ ok đó. quá tải vậy mà fet phiếc không vấn đề gì. như vậy là trâu bò rồi. giờ lo nâng công suất lên là được.Nguyên văn bởi moto Xem bài viếtHnay cúp điện e lấy cái inveter ra xài quạt máy, wên dặn bà chị nên bả mở máy nước nóng thì cái quạt máy quay rề rề ko nổi đồng thời e nghe cái inveter nó kêu è...è. Hoảng wá lại tắt kịp thời.
E ko hỉu sao con Rshunt e thiết kế cho 600w, đág lý mở máy nước nóng nó phải báo ngắt wá dòng nhưng tại sao nó ko ngắt mà nó kêu è...è và tuột áp ra ạ. E xem lại board EGS thì thấy nó thiếu con R27 như board của bác dinhthuong80, vậy đó có phải là nguyên nhân?. Các bác bắt mạch giúp e với
Comment
-
Nguyên văn bởi developerv Xem bài viếtĐộ phân giải pwm chỉ có 25 cho biên áp là quá thấp.
bạn TP_Electro cái câu in đậm này mình thấy thật sự là k có ý nghĩa. timer nó tăng đến 25 thì nó xảy ra ngắt tràn timer và cập nhật giá trị bảng sin mới cho pwm. cho dù cái này có là 250 hay 1000 cũng vẫn như nhau. bởi vì ở đây bạn đấy chọn timer để ngắt cũng là tạo pwm luôn nên nếu muốn tăng tần số thì tăng khoảng chia. chứ cái con số 25 ở đây k có ý nghĩa gì cả. cái chính ảnh hưởng chỉ là tần số pwm và số khoảng chia. còn cái 25 này là bạn đấy chọn để thời gian ngắt timer nó bằng đúng 1 khoảng sin đã chia để cập nhật pwm. nếu ở đây bạn chọn click timer chia 2 chẳng hạn thì con số 25 sẽ phải là 50 và mọi thứ k hề thay đổi. tần số pwm vẫn vậy. giá trị sin vẫn là 100 khoảng. nên mình nói cái số 25 này chỉ là tính toán sao cho nó khớp thời gian cập nhật. chứ k có ý nghĩa gì khác.
mình nghĩ bạn đang hiểu nhầm còn số này với cái gì đó. ở đây nếu nói rõ ràng thì chia nửa chu kỳ sin cho 100 như vậy là 0.1ms 1 khoảng. và theo như code này thì trong 0.1ms đó chân pwm chỉ on và off đúng 1 lần vừa khít khoảng 0.1ms đó(chu kỳ pwm =0.1ms). và sau mỗi 0.1ms thì phải cập nhật giá trị mới cho pwm khớp với bảng sin. và cái 25 này là để tính thời gian vừa khít 0.1ms để thay đổi giá trị pwm chứ ngoài ra k có ý gì khác nghĩa khác,nếu mình chọn chia tần timer khác đi thì con số 25 này nó khác đi. nhưng nó vẫn phải tính đến 0.1ms để cập nhật pwm. và đếm bao nhiêu k quan trọng quan trọng là đếm đủ đến 0,1ms.
"Độ phân giải pwm chỉ có 25 cho biên áp là quá thấp.
bạn cái câu in đậm này mình thấy thật sự là k có ý nghĩa. timer nó tăng đến 25 thì nó xảy ra ngắt tràn timer và cập nhật giá trị bảng sin mới cho pwm". Mình thấy bạn sai chổ này rồi. Độ phân giải duty nó quyết định biên độ áp (sin) có mịn hay không rồi mới tính đến lấy bao nhiêu mẫu trong bảng sin để tao ra sin có biên độ "mịn" tối đa là = độ phân giải, chúng ta có thể lấy mẫu thấp hơn so với độ phân giải được. Câu đó mà bạn nói không có nghĩa thì mình cũng ko biết nói sao. Để mình nói để bạn hiểu. Mình tạm gọi thanh ghi chưa giá trị tao chu kì cho pwm là AR(thanh ghi này được nạp qua bộ đếm) và thanh ghi so sánh chứa giá trị để tạo %duty cho pwm là BR. Nói theo trường họp của bạn kia thì để tạo được spwm có 100 xung pwm (có thể gọi là 100 mẫu áp/1/2chu ki sin) mà nằm trọn trong 10ms thì đương nhiên mỗi chu kì pwm hết 100us. Nhưng mỗi chu kì pwm này được taọ nên bởi việc đếm lên giá trị bộ đếm cho đến bằng giá trị nạp vào thanh ghi AR, ở đây là 25 vì 25x4us =100us của 1 chu kì pwm(khoảng thời gian 1 ngắt pwm xảy ra). Do đó, độ phân giải là 100%duty biên đô áp tương ứng với tối đa 25 bậc(quá bé chứ còn gì nữa bạn). Ở đây bạn tính ra được Fpwm là 10khz. Nếu bạn nói giá trị nạp vào thanh ghi AR không có nghĩa thì bây giờ giả sử mình nạp vào 250, tức có nghĩa bộ đếm tốn thòi gian 250x4us = 1ms cho một chu kì pwm cho nên Fpwm nó giảm chứ sao không mà bạn nói ko có nghĩa? Thanh ghi so sánh tạo duty không liên quan đến chu kì pwm ở đây. Giá trị nó ở đây Max là 25 ( nếu trong non-inverting Compare Output mode) thì ngỏ ra pwm gần như luôn mưc cao và để có bậc áp ra 50% thì giá trị nạp vào là 12.5. Chỉ có thể tao sin tối ra 25 bậc cho áp 310vdc thì độ phân giải không phải quá bé còn là gì. Mỗi bậc áp cách nhau đến 12.4v quá xa.
Tóm lại, việc bạn dùng 1 timer tạo duty pwm và update bảng sin(giá trị thanh ghi BR, AR luôn ko đổi) sau mỗi chu kì pwm (khi có ngắt tràn BR), thì nội dung thanh ghi AR lớn hay bé đều ảnh hưởng đến trước tiên đến quyết định số lần tạo mẫu sin max cho bảng sin và tần số pwm. Giá trị thanh ghi AR nhỏ thì có thể tạo được tần số Fpwm cao hơn nhưng hạn chế độ phân giải khi tạo bản sin, giá trị thanh ghi AR lớn thì tạo được tần số Fpwm thấp hơn nhưng dải lấy mẫu cho bản sin rộng hơn, có thể lấy được nhiều mẫu hơn.
Tất cả các ý trên đều quy chung cho cùng 1 Fsin.
Comment
-
Fet không bị gì chắc có thể là nhờ phần DC nó sụt áp. Mạch dò dòng ko tác động có thể bạn đặt ngưởng công suất cao quá so với cs phần DC-DC.Nguyên văn bởi developerv Xem bài viết
như vậy mà mạch bạn chạy có vẻ ok đó. quá tải vậy mà fet phiếc không vấn đề gì. như vậy là trâu bò rồi. giờ lo nâng công suất lên là được.
Mình dùng mos cầu H loại 23n50 không tản nhiệt nhưng chạy 1 cái bóng tròn 60w + 2 cái quạt mà cũng ko nóng.
Comment
-
Quấn thêm cho nó 10-15 vòng nữa đi, vì nó có 80 vòng/3x3vòng nên áp bình 11V là ra còn 290V à. Mình lấy lõi BAX nguồn PC bình thường thôi.Nguyên văn bởi developerv Xem bài viết
Hì bạn cho mình hỏi ngu cái là lõi pssu là lõi gì nhỉ.mình cũng chuẩn bị làm lại phần dc dc vì hiện tại đang dùng dc dc của bo santak.khi có tại nó sụt xuống còn 290v kể cả thay trở hồi tiếp.áp nó chỉ co khi không tải.cứ có tải là về 290v mới khó chịu chứ
Comment
-
Bạn cho mình hỏi về truy cập bảng dữ liệu giống của bạn như trên nhưng là 16 bít có nghĩa là kiểu unsigned int thì làm sao để lấy ra nữa thấp và nữa cao riêng của dữ liệu được vậy bạn.Nguyên văn bởi developerv Xem bài viếtMình xin giải thích sơ qua code sau nha. giờ k kịp viết. nhưng sơ sơ là timer0 tạo pwm nếu mà mình tính toán timer0 có thời gian ngắt = với khoảng sin đã chia thì sẽ k cần timer 2 để cập nhật bảng sin nữa. nhưng mình ngại tính toán lại nên hiện tại timer0 này chạy từ 0 đến 255 xung sẽ tràn và reset pwm (hết 1 chu kỳ pwm).OCR0A này chính là giá trị mà ghi thanh ghi timer 0 = giá trị nàyy thì nó lật trạng thái chân PWM. cái này cập nhật giá trị bảng sin vào.Code:/* * gpio.c * * Created: 7/22/2016 7:49:10 PM * Author : Duy-Muoi */ #include <avr/io.h> #define F_CPU 16000000UL // 1 MHz #include <util/delay.h> #include <avr/interrupt.h> volatile unsigned char chuyentt=0; //bi?n chuyen trang thai chan ra sin volatile unsigned char valtsin=0; //chay bang sin unsigned char bangsin[]={3,6,9,12,15,18,21,24,27,30,34,37,40,43,46,49,52,55,58,60,63,66,69,72,75,78,81,84,87,90,92,95,98,101,104,106,109,112,114,117,120,122,125,128,130,133,135,138,140,143,145,148,150,153,155,157,160,162,164,166,169,171,173,175,177,179,181,183,185,187,189,191,193,195,197,199,200,202,204,205,207,209,210,212,213,215,216,217,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,236,237,238,238,239,239,240,240,241,241,242,242,242,243,243,243,243,243,243,243,243,243,243,243,243,243,242,242,242,241,241,240,240,239,239,238,238,237,236,236,235,234,233,232,231,230,229,228,227,226,225,224,223,221,220,219,217,216,215,213,212,210,209,207,205,204,202,200,199,197,195,193,191,189,187,185,183,181,179,177,175,173,171,169,166,164,162,160,157,155,153,150,148,145,143,140,138,135,133,130,128,125,122,120,117,114,112,109,106,104,101,98,95,92,90,87,84,81,78,75,72,69,66,63,60,58,55,52,49,46,43,40,37,34,30,27,24,21,18,15,12,9,6,3,0}; ISR (TIMER2_COMPA_vect){ OCR0A = bangsin[valtsin];// set PWM for 50% duty cycle valtsin ++; if(chuyentt==1){//chan 1 và 3 PORTC = 0b101;//101 chan pc0 va pc2 } if(chuyentt==2){ PORTC = 0b1010;//1010 chan pc1 va pc3 chuyentt = 0; } if(valtsin == 250){ chuyentt++; valtsin=0;//t?t chân ra ?? ch?ng deathtime //tat het chan ra PORTC = 0x00; } } int main(void) { //pwm cho timer 0 TCCR0A = (1<<COM0A1)|(1<<WGM01)|(1<<WGM00); TCCR0B = (1<<CS00); //khong chia tan DDRD |=(1<<DDD6); //setup timer 2 TIMSK2 = (1<<OCIE2A);//cho phép ng?t timer 2 TCCR2A |= (1<<WGM21); TCCR2B |= (1<<CS22); OCR2A = 9;//tang t? 1->9 t??ng ???ng v?i 10ms () TCNT2 = 0; sei();//cho phep ngat toan cục DDRC = 0xff; PORTC = 0x00; DDRB = 0b11110000; PORTB = 0x00; /* Replace with your application code */ while (1) { } }
hiện tại mình dùng thạch anh 16mhz nên 1us sẽ chạy dc 16 chu kỳ máy. và 256 chu kỳ máy thì hết 16us như vậy là chu kỳ của pwm là 16us.
giờ mình dùng timer 2 để cập nhật giá trị cho pwm. thời gian cập nhật giá trị bảng sin phải bằng thời gian mình đã chia nửa chu kỳ sin. ở đây mình chia thành 250 đoạn. và mình tính toán timer2 khi nó ngắt sao cho thời gian tràn của nó bằng đúng khoảng thời gian đoạn sin mình chia để cập nhật bảng sin
OCR0A = bangsin[valtsin];
valtsin : cái này nó mỗi lần cập nhật bảng sin nó tăng lên 1 và như vậy lần lượt giá trị sin dc đưa vào pwm theo đúng thời gian đã chia.
khi đủ 250 lần có nghĩa hết chu kỳ sin thì reset lại biến đếm. và mình tắt hết các chân để tạo deathtime luôn. thật ra thì trong bảng sin đoạn 250 này nó cũng bằng 0 và mình tắt như vậy k bị trái.
ở trên mình dùng 4 chân của port c để đảo trạng thái. có 2 chân thì mình sử dụng 4066 kết hợp với chân pwm để tạo ra 2 chân pwm như mình nói trước đó. như vậy là 4 chân ra sẽ có 2 chân pwm và 2 chân đảo trạng thái mỗi nửa chu kỳ.Code:if(valtsin == 250){ chuyentt++; valtsin=0;//t?t chân ra ?? ch?ng deathtime //tat het chan ra PORTC = 0x00; }
giừo buồn ngủ có thể viết không chuẩn lắm nhưng sơ sơ là vậy. có gì bạn cứ hỏi mình sẽ giải thích rõ hơn về code của mình
--
thêm chút ở đây mình có biến chuyentt biến này là để khi chạy hết 1 lượt bảng sin có nghĩa hết nửa chu kỳ thì mình sẽ đổi sang 2 chân khác(1 chân pwm 1 chân luôn mở - mở hết 1 nửa chu kỳ lại off để sang 2 chân kia ) .và chạy hêt nửa chu kỳ nữa lại đảo về 2 chân đầu. chứ xen kẽ vậy
vd: unsigned int bangsin[]=....
isr
OCR0A = bangsin[valtsin]; ????lệnh này giờ như thế nào khi bảng data chứa giá trị 2byte nhỉ?
thanhks.
Comment
-
Cứu mình với, hôm qua thay tụ dầu của quạt cho đúng 2.2uF rồi cắm cái máy đo hạ áp bằng tụ vào để đo hiệu suất thế là nghe è è rồi toi mất mạch EGS và mấy con 740!
Mình soi sóng thì thấy các chân vào IR2110 vẫn có tín hiệu SPWM 5V nhưng chỉ một chân số 1 của một con là có SPWM12V, vậy là chết 2 con IR2110 rồi phải không, mua mới thay là chạy phải không nhỉ?
Tiếc quá đi mất, bộ pure sin đầu tay của mình, hu hu!!!!!
Comment
-
Em nghĩ theo cách này để tạo xung pwmNguyên văn bởi TP_Electro Xem bài viếtKhông nhầm đâu bạn. Mình cũng nói là chỉ sử dụng 1 timer và ngắt tràn TOP của nó để update duty. Bạn ấy chia 100 khoảng trong 10ms tức mỗi khoảng chỉ có 0,1ms = 100us <=> Fspwm = 10khz. mà clock timer chọn là chia 16Mhz/64 = 0,25Mhz => Ttimer clock = 4us. Vậy cứ 4us là tăng được 1 giá trị mà mỗi khoảng chỉ có 100us nên dutyMAX = 100/4 = 25. Vậy nạp vào ICR1 là 25 và Fspwm chỉ được có 10khz. Độ phân giải pwm chỉ có 25 cho biên áp là quá thấp.
TP_Electro thế cần chia như thế nào để đạt được như ý vậy bác ??? (việc tăng lên thì không khó nhưng ko biết như nào là đủ )
Nếu e để clock=16Mhz và vẫn chia 100 khoảng lúc này ICR1=1600 đã được chưa bác ???
developerv cái deadtime tính sao bác ??? e thử với cái code e viết ở trên với điện áp 20v(sac laptop) thì FET nóng mà ko thu được j cả
TP_Electro developerv thank 2 bác đã đọc code lởm của e
.Cuối tuần về quê lên không theo dõi được.
Comment
-
Nguyên văn bởi TP_Electro Xem bài viết
"Độ phân giải pwm chỉ có 25 cho biên áp là quá thấp.
bạn cái câu in đậm này mình thấy thật sự là k có ý nghĩa. timer nó tăng đến 25 thì nó xảy ra ngắt tràn timer và cập nhật giá trị bảng sin mới cho pwm". Mình thấy bạn sai chổ này rồi. Độ phân giải duty nó quyết định biên độ áp (sin) có mịn hay không rồi mới tính đến lấy bao nhiêu mẫu trong bảng sin để tao ra sin có biên độ "mịn" tối đa là = độ phân giải, chúng ta có thể lấy mẫu thấp hơn so với độ phân giải được. Câu đó mà bạn nói không có nghĩa thì mình cũng ko biết nói sao. Để mình nói để bạn hiểu. Mình tạm gọi thanh ghi chưa giá trị tao chu kì cho pwm là AR(thanh ghi này được nạp qua bộ đếm) và thanh ghi so sánh chứa giá trị để tạo %duty cho pwm là BR. Nói theo trường họp của bạn kia thì để tạo được spwm có 100 xung pwm (có thể gọi là 100 mẫu áp/1/2chu ki sin) mà nằm trọn trong 10ms thì đương nhiên mỗi chu kì pwm hết 100us. Nhưng mỗi chu kì pwm này được taọ nên bởi việc đếm lên giá trị bộ đếm cho đến bằng giá trị nạp vào thanh ghi AR, ở đây là 25 vì 25x4us =100us của 1 chu kì pwm(khoảng thời gian 1 ngắt pwm xảy ra). Do đó, độ phân giải là 100%duty biên đô áp tương ứng với tối đa 25 bậc(quá bé chứ còn gì nữa bạn). Ở đây bạn tính ra được Fpwm là 10khz. Nếu bạn nói giá trị nạp vào thanh ghi AR không có nghĩa thì bây giờ giả sử mình nạp vào 250, tức có nghĩa bộ đếm tốn thòi gian 250x4us = 1ms cho một chu kì pwm cho nên Fpwm nó giảm chứ sao không mà bạn nói ko có nghĩa? Thanh ghi so sánh tạo duty không liên quan đến chu kì pwm ở đây. Giá trị nó ở đây Max là 25 ( nếu trong non-inverting Compare Output mode) thì ngỏ ra pwm gần như luôn mưc cao và để có bậc áp ra 50% thì giá trị nạp vào là 12.5. Chỉ có thể tao sin tối ra 25 bậc cho áp 310vdc thì độ phân giải không phải quá bé còn là gì. Mỗi bậc áp cách nhau đến 12.4v quá xa.
Tóm lại, việc bạn dùng 1 timer tạo duty pwm và update bảng sin(giá trị thanh ghi BR, AR luôn ko đổi) sau mỗi chu kì pwm (khi có ngắt tràn BR), thì nội dung thanh ghi AR lớn hay bé đều ảnh hưởng đến trước tiên đến quyết định số lần tạo mẫu sin max cho bảng sin và tần số pwm. Giá trị thanh ghi AR nhỏ thì có thể tạo được tần số Fpwm cao hơn nhưng hạn chế độ phân giải khi tạo bản sin, giá trị thanh ghi AR lớn thì tạo được tần số Fpwm thấp hơn nhưng dải lấy mẫu cho bản sin rộng hơn, có thể lấy được nhiều mẫu hơn.
Tất cả các ý trên đều quy chung cho cùng 1 Fsin.
nhìn đến đây có thể thấy mình hiểu nhầm ý bạn chút. đúng là bạn đó chọn 25 xugn ngắt timer và 4us 1 lần đếm như vậy là không ổn.mình k để ý đến cái vấn đề ở 4us này mà mình lại nói tập trung vào con số 25 này. nói đơn giản ở trường hợp này mỗi lần đếm lên 4us như vậy đếm đến 25 thì quá ngắn. vì trong quá trình đếm từ 0->25 sẽ có khoảng thời gian để đổi trạng thái chân pwm như vậy nếu 100 mẫu mà ở đây đếm có 25 thì chỉ dc tối đa 25 mẫu vì có nhiều mẫu bị trùng nhau . nên ở đây tối thiểu chia cho 100 thì phải chọn ít nhất đếm đến 100 là hết 1 chu kỳ thì sẽ hợp lý hơn.
Comment
-
Đúng rồi đó bạn, Nó chỉ có tối đa được 25 bậc cho nữa chu kì sin vậy 1 sườn dốc chỉ có 12,5 thì quá thưa cho áp 310vdc.Nguyên văn bởi developerv Xem bài viết
nhìn đến đây có thể thấy mình hiểu nhầm ý bạn chút. đúng là bạn đó chọn 25 xugn ngắt timer và 4us 1 lần đếm như vậy là không ổn.mình k để ý đến cái vấn đề ở 4us này mà mình lại nói tập trung vào con số 25 này. nói đơn giản ở trường hợp này mỗi lần đếm lên 4us như vậy đếm đến 25 thì quá ngắn. vì trong quá trình đếm từ 0->25 sẽ có khoảng thời gian để đổi trạng thái chân pwm như vậy nếu 100 mẫu mà ở đây đếm có 25 thì chỉ dc tối đa 25 mẫu vì có nhiều mẫu bị trùng nhau . nên ở đây tối thiểu chia cho 100 thì phải chọn ít nhất đếm đến 100 là hết 1 chu kỳ thì sẽ hợp lý hơn.
Comment
-
TP_Electro bạn dùng timer 16 bit chi cho cực. cứ tính 8 bit cho lành. chia tần sao cho hợp lý đếm đến 255 ngắt là vừa. như vậy bạn chia sin ra tầm 255 luôn hoặc 250 khoảng vẫn ok.đấy là tính cho cách dùng 1 timer. còn nếu làm 2 timer thì 1 timer 0 để pwm và timer 1 hoặc 2 để cập nhật giá ttrị pwm thì nhàn hơn vì tần số pwm chọn thoải mái pwm chạy riêng còn timer cập nhật pwm riêng.k phải tính toán nhiều
Comment
-
Không đc đâu bạn. Vì atmega8 clock of timer nó chỉ có chia 1,8,64,... nên nó quá nhanh hoặc quá chậm nếu dùng chỉ 1 timer. Nếu bạnk dùng scaler chi 1 nếu dùng đếm 8bit tạo chu ki pwm thì nó quá nhanh cho 200 khoảng trong 10ms, tức ko thể nào tạo đc 200 chu ki pwm mà nó tạo lớn hơn rất nhiều trong 10ms đó. Và ngược lại bạn chọn scaler lớn thì ko thể tạo được số khoảng nhiều trong 10ms đó. Số khoảng này tỉ lệ thuận với tần số pwm nhé bạn. Ko tin bạn thử xem có dc ko là biết. Hơn nữa mình chọn giá trị thanh ghi ICRx càng lớn và tần số Fpwm nhỏ thì khoảng ngắt mình có thời gian nhiều để code xử lí nhiều hơn.
Mình đã viết xong code chạy Fpwm 22khz chỉ dùng timer1 với giá trị 727 với bảng sin 220 giá trị OCRx cho 10ms. Giờ đang học đến phần ADC để dò hồi tiếp cũng gần xong chỉ còn giao diện giữa hai phần là coi như xong. Ta 16Mhz. scaler chia 1.
Comment
-
Nguyên văn bởi TP_Electro Xem bài viếtKhông đc đâu bạn. Vì atmega8 clock of timer nó chỉ có chia 1,8,64,... nên nó quá nhanh hoặc quá chậm nếu dùng chỉ 1 timer. Nếu bạnk dùng scaler chi 1 nếu dùng đếm 8bit tạo chu ki pwm thì nó quá nhanh cho 200 khoảng trong 10ms, tức ko thể nào tạo đc 200 chu ki pwm mà nó tạo lớn hơn rất nhiều trong 10ms đó. Và ngược lại bạn chọn scaler lớn thì ko thể tạo được số khoảng nhiều trong 10ms đó. Số khoảng này tỉ lệ thuận với tần số pwm nhé bạn. Ko tin bạn thử xem có dc ko là biết. Hơn nữa mình chọn giá trị thanh ghi ICRx càng lớn và tần số Fpwm nhỏ thì khoảng ngắt mình có thời gian nhiều để code xử lí nhiều hơn.
Mình đã viết xong code chạy Fpwm 22khz chỉ dùng timer1 với giá trị 727 với bảng sin 220 giá trị OCRx cho 10ms. Giờ đang học đến phần ADC để dò hồi tiếp cũng gần xong chỉ còn giao diện giữa hai phần là coi như xong. Ta 16Mhz. scaler chia 1.
Bác cho e xem code của bác với
chứ e loay hoay mà chẳng biết làm ntn cho đúng cả
Comment
-
Vậy tạm thời dùng 2 timer như mìnhvđi.dạo nạy bận cv nhậu nhèm suốt nên chưa thử chuyển sang 1 timer.như hiện tại tính ra mình dùng 2 tiner pwm mình chia tần cho 4 và tính ra thì 1 khoảng sin sẽ có 2.5 lânf pwm. Nếu nghĩ sơ sơ thì sẽ k chuầnr nhưng mình vẽ ra giấy rồi tuy 2.5 k tròn nhưng k hề làm ảnh hưởng đến bậc sin.mình chia 250 bậc thì vẫn chuẩn 250 bậc nên anh rm hoàn toàn yên tâm về cách pwm chạy 1 nẻo còn timer cập nhật pwm chạy 1 nẻo( ở đây vẫn phải lưu ý là tần số pwm phải bằng hoặc cao hơn tânf số khi đã chia ra bậc sin.mình k biết gọi là gì cho chuẩn nữa.nhưng vơi avr chọn pwm 8 bit k chia tầm thì bảng sin có thể chia thoái mái trên dưới 500 bậcNguyên văn bởi TP_Electro Xem bài viếtKhông đc đâu bạn. Vì atmega8 clock of timer nó chỉ có chia 1,8,64,... nên nó quá nhanh hoặc quá chậm nếu dùng chỉ 1 timer. Nếu bạnk dùng scaler chi 1 nếu dùng đếm 8bit tạo chu ki pwm thì nó quá nhanh cho 200 khoảng trong 10ms, tức ko thể nào tạo đc 200 chu ki pwm mà nó tạo lớn hơn rất nhiều trong 10ms đó. Và ngược lại bạn chọn scaler lớn thì ko thể tạo được số khoảng nhiều trong 10ms đó. Số khoảng này tỉ lệ thuận với tần số pwm nhé bạn. Ko tin bạn thử xem có dc ko là biết. Hơn nữa mình chọn giá trị thanh ghi ICRx càng lớn và tần số Fpwm nhỏ thì khoảng ngắt mình có thời gian nhiều để code xử lí nhiều hơn.
Mình đã viết xong code chạy Fpwm 22khz chỉ dùng timer1 với giá trị 727 với bảng sin 220 giá trị OCRx cho 10ms. Giờ đang học đến phần ADC để dò hồi tiếp cũng gần xong chỉ còn giao diện giữa hai phần là coi như xong. Ta 16Mhz. scaler chia 1.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -
-
Trả lời cho Máy điện châm ?bởi nick22Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
-
Channel: Điện tử y sinh
01-12-2025, 13:23 -
-
Trả lời cho Làm thế nào để check IC LM358bởi thetungĐể check IC sống hay chết thì đơn giản : bạn lắp cái mạch ( khuếch đại hoặc dao động ) chạy bằng con IC đó ,nhưng vị trí IC thì lắp cái đế .... thế là cứ cắm rút thì biết . Còn không thì kiếm cái này : https://shopee.vn/Xu-M%C3%A1y-ki%E1%...di-%C4%91%E1%B...
-
Channel: Hướng dẫn tìm thông tin linh kiện
28-11-2025, 14:34 -
-
bởi ngochung90Tình hình là em có mua mạch 3s về để hàn vào khối pin 12v, hàn xong em đo tại các chân từ B-, B1, B2, B+ thì điện áp pin vẫn đủ 12,6v, nhưng tại 2 chân ra P- P+ thì đo chỉ được 6,3v là bị sao các bác, và chân P- P + này đồng thời là chân sạc xả thì mình cắm sạc xả cùng lúc được ko ạ
...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2025, 10:32 -

Comment