![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 8
: |
dùng Pic18f4520 để kích scr
mình đang dùng pic18f4520 để kích scr.bây giờ đang bí ở viết chương trình để nạp cho pic
cụ thể mình muốn như sau: - khi có ngắt ngoài(ngắt cạnh lên"cái này dùng để xác định đầu mỗi chu kì điện áp")thì khời tạo Timer0 với 1 thời gian bất kì tuy thuộc vào điện áp đọc qua bộ ADC là bao nhiêu -sau 1 khoảng thời gian timer0 ngắt thì xuất ra chân DO một xung để kích scr(xung này có bề rộng khoảng 10us"chủ yếu là tạo ra 1 cái gai để kích scr") đồng thời khởi tạo Timer1 (sau 10ms)thì kích tiếp một xung nữa ở chân D1 mong các bạn góp ý giùm mình. dưới đây là sơ đồ nguyên lý. |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Để đảm bảo việc kích SCR thành công thì người ta kích bằng một chuỗi xung, chứ ít khi kích bằng một xung đơn. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 8
: |
cám ơn bạn nhiều.nếu có thể bạn có thể gợi ý cho mình với.minh suy nghĩ hơn 1 tháng rùi nhưng vẫn viết ko dc
j5 mình nối nó với 1 biến áp để hạ điện áp 220VAC từ đầu cực máy phát xuống 3VAC qua lm324 để biến tín hiệu Sin thanh xung vuông.dùng tín hiệu này đề xác định đầu chu kì để kích SCR nói như bạn rất đúng.kích scr phải kích bằng một chuỗi xung,nhưng vì viết thế minh ko viết dc nên giờ viết kích 1 chu kỳ trước đã. a vậy nếu ko dùng điện trở 10K và tụ 10uf.thì dùng gì hả bạn.cái này tại mình làm theo con 89c51.mình cứ nghi là lam the thi no có thể reset,hay la phải làm theo datasheet :dùng 2 điện trở và 1 tu Pi (tụ thì trong datasheet ko nói rõ là tụ nhiêu Picofara )1 diode thay đổi nội dung bởi: nuacuatoi2010, 14-12-2008 lúc 08:10 PM. |
![]() |
![]() |
![]() |
#4 | |
Trưởng lão PIC bang
|
Trích:
Để phát hiện cực tính điện áp (thực ra bạn đang dò điểm không-zero crossing point) thì nên dùng vi mạch so sánh. Dùng OP-AMP với tần số lưới cũng được, nhưng OP-AMP vốn không được thiết kế để hoạt động ở chế độ này. Trước khi nói về code, bạn nên cho biết bạn dự định viết bằng hợp ngữ hay một ngôn ngữ cấp cao nào đó (Basic, Pascal, C, ...). Tốt hơn nữa thì bạn cho biết trình biên dịch bạn đang/dự định sử dụng. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 8
: |
mình viết bằng ccs.
mình dùng opamp tai vì thầy hướng dẫn bảo mình dùng con đó. mình cũng thử mô phỏng Protues rui.lm324 co tao ra xung vuong. và minh cũng thử viết 1 ngắt ngoài(ngắt cạnh lên) để kiểm tra trên mạch thực tế và thấy nó cũng hoạt động - à minh hỏi cái này nữa:trong mạch của mình sau cầu Chỉnh lưu dùng tụ 1uF thì có được không.tại mình nghĩ dùng tụ 1uF thì nó lọc áp chưa phẳng nên khi qua lm324 sau đó vào AN0 và AN1 thì ADC của pic nó đọc kô chính xác. mình đã thử viết một chương trình để đọc ADC: bạn thử kiểm tra giùm xem code nó đúng không nhé: #include <18f4520.h> #DEVICE ADC=10 #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, STOP=1) int16 ap=0,dong=0; void main() { setup_ADC(All_Analog); setup_ADC(ADC_CLOCK_INTERNAL); while(1) { set_adc_channel(0); delay_us(10); ap=read_adc(); set_adc_channel(1); delay_us(10); dong=read_adc(); printf("%lu %lu \n\r",ap,dong); } } thay đổi nội dung bởi: nuacuatoi2010, 20-12-2008 lúc 01:28 AM. |
![]() |
![]() |
![]() |
|
|