PDA

View Full Version : Mạch điều khiển từ xa



dung43
17-09-2009, 11:49 AM
Nửa đêm đang ngủ ngon phải bò dậy tắt quạt vì lạnh. Bật quạt mãi mà không chạy do nút bấm bị kẹt. Sáng dậy thấy điện vẫn sáng do tối qua ngủ quên không tắt điện.... Đó là những tình huống khó chịu mà ta gặp phải trong cuộc sống hàng ngày.
Tất cả các lý do trên khiến mình phải bỏ ra 2 tuần để chế ra 1 bộ điều khiển từ xa. Sử dụng vi điều khiển 89C2051 cộng với cái điều khiển TV SONY vứt đi là đã có 1 bộ điều khiển từ xa như ý. Chạy 2 năm nay mà chưa có hỏng hóc gì.
Ta đi sâu vào điều khiển cái quạt bàn.
Chức năng của quạt bàn ta thường thấy gồm có:
- On/Off
- Hẹn giờ (30', 1h, 2h, 4h)
- Đổi tốc độ (Số 1, số 2, số 3)
- Gió liu riu (Nature Wind)

Cách up mạch và code ở đâu nhỉ?

dung43
17-09-2009, 12:35 PM
Đây là mạch in đã chạy thử 2 năm. Hiện vẫn đang chạy thử tiếp. Nếu 10 năm nữa kô vấn đề gì là ok. (chắc lúc đó công nghệ đạt đến mức chỉ nghĩ đến "gió" thôi là quạt đã bật rồi :( )

http://i896.photobucket.com/albums/ac170/dung43/Image046.jpg

http://i896.photobucket.com/albums/ac170/dung43/DSC04778JPG.jpg

DTT88
18-09-2009, 05:42 AM
Chào bác bác có thể cho em biết nguyên lý hoạt động của linh kiện thu hồng ngoại dc không .Cá ơn nhiều

dung43
18-09-2009, 08:17 AM
Điều khiển từ xa phát ra các bit 0 va 1. Tuy nhiên nó không thể đưa lên LED hồng ngoại và phát trực tiếp các bit này được (không phát đi xa được). Vì vậy nó cần phải có 1 sóng mang với tần số khoảng 36KHz (giống như trong Radio ấy).

http://i896.photobucket.com/albums/ac170/dung43/tr3.gif

Để làm được bộ phát như trên có 2 cách:
- Tạo ra 1 tần số 36 KHz ổn định làm sóng mang (Dùng NE555)
(36KHz) AND (Bit 0,1) = Output_Signal
- Cách 2 đơn giản hơn. Ra chợ mua 1 cái đk về dùng

Bộ thu là 1 con IC 3 chân(VCC--GND--OUTPUT). Nó có nhiệm vụ nhận tín hiệu hồng ngoại yếu ớt từ đk phát ra, khuyêch đại tín hiệu, tách sóng mang để lọc ra những bít 0 và 1.

http://i896.photobucket.com/albums/ac170/dung43/tr4.jpg

Mỗi 1 lần phát, đk sẽ phát đi 1 chuỗi các bít 0 và 1. IC nhận cũng sẽ nhận đúng số lượng và đúng thứ tự các bit này.

http://i896.photobucket.com/albums/ac170/dung43/tr5.jpg

Sau khi nhân được chuỗi các bit, nhiệm vụ của người lập trình là giải mã chuỗi bit này.
Mỗi loại đktx sẽ tuân theo 1 chuẩn mã khác nhau (RC5 là 1 chuẩn phổ biến).
Trong chuỗi bit đó người ta sẽ phân ra làm 2 phần:
- phần 1 là địa chỉ để phân biệt các thiết bị khác nhau(cùng là hãng SONY nhưng đktx của TV không làm ảnh hưởng đến đầu DVD chẳng hạn)
- phần 2 là phần lệnh (lúc này sẽ chỉ rõ lệnh phát ra là gì khi ta ấn nút trên đk)

http://i896.photobucket.com/albums/ac170/dung43/tr7.jpg

Cuối cùng dựa vào lệnh đã nhận. Ta chỉ việc sử dụng thôi. Ví dụ ấn nút số 1 trên đktx thì sẽ nhận được số 1, ta bật cái quạt. Ấn số 2 ta nhận đc số 2, ta bật cái bóng điện v.v..

http://i896.photobucket.com/albums/ac170/dung43/tr9.jpg

dung43
18-09-2009, 11:13 AM
Đây là chuẩn SIRC mà đktx SONY sử dụng (ở đây mình sử dụng bộ mã 12 bits)

http://i896.photobucket.com/albums/ac170/dung43/ChuanSIRC.jpg


http://i896.photobucket.com/albums/ac170/dung43/Bits.jpg

dung43
18-09-2009, 11:17 AM
Sau khi đã hiểu qua về mã truyền và nhận. Ta đi xây dựng phần cứng.

Phần cứng gồm các nút bấm, các đèn LED báo, cách ly quang MOC3020 để điều khiển triac MAC97. Các triac này để đóng/mở việc cấp nguồn cho cuộn dây của quạt (quạt có 3 số --> 3 cuộn dây --> 3 triac)

http://i896.photobucket.com/albums/ac170/dung43/schematicfanJPG.jpg

dung43
18-09-2009, 11:19 AM
Phần cứng đã xong, kiến thức đã đủ. Bây giờ là ngồi vào máy tính và lâp trình thôi.

dung43
18-09-2009, 11:31 AM
Công việc đầu tiên của lập trình là làm sao để thu được 12 bit mà đktx đã phát đi. Chân OUTPUT của con IR receiver nối với chân ngắt ngoài INT0 của 89C2051.
Khi có ngăt ngoài xảy ra (tức là đã có tín hiệu phát ra từ bộ đktx) chương trình sẽ dừng các việc đang làm và nhảy vào trình phục vụ ngắt.
Chương trình ngắt sẽ làm gì?
- Việc đầu tiên khi nhảy vào ngắt là chờ cho bit START về 0
- Đọc bít ngay sau đó
- Lưu vào vị trí bit đầu tiên của 2 byte (2 byte nằm trong 1 biến: int receiver;)
- Dịch bít này sang trái 1 lần
- Đọc bít tiếp theo......
- Nhận đủ 12 bit
- Lọc ra 7 bit đầu để lấy ra lệnh (tức là đktx vừa bấm nút nào?)
- Tra trong bảng lệnh để thực hiện 1 công việc nào đó

dung43
18-09-2009, 03:29 PM
Đây là đoạn chương trình ngắt INT0

http://i896.photobucket.com/albums/ac170/dung43/interrupt.jpg

dung43
21-09-2009, 10:08 AM
Bạn sv nào muốn làm 1 bộ đktx hoàn chỉnh thì cứ hỏi nhé, mình sẽ giúp nhiệt tình. (Nhớ đăng ký làm thành viên trước, và đừng quên đóng góp những hiểu biết cho forum thêm sôi động)
Sau vụ này sẽ giúp các bạn sv mới làm quen với lập trình, nâng cao kiến thức về lập trình ngắt, sử dụng các timer, ưu tiên ngắt....

sonth8x
02-10-2009, 08:37 PM
Anh ơi!Em học CNTT bây giờ học đến thiết kế mạch điện tử.Anh cho em hỏi cái đoạn anh lập trình bằng C?hay sao vậy?và phần mềm chạy lập trình đó Em mới học thiết kế mạch mong anh thông cảm!

dung43
02-10-2009, 10:42 PM
Anh lập trình bằng Keil C. Dùng chip 89C2051. Vẽ mạch bằng Protel99SE.

dung43
02-10-2009, 10:51 PM
Nếu em muốn tìm hiểu chi tiết về cái mạch đó thì trước hết hãy tìm hiểu về vi điều khiển. Về lập trình keilC, và vẽ mạch.
Còn nếu muốn làm 1 cái để dùng thì anh gửi vào mail cho code, mạch in.

cocasau01
03-10-2009, 03:02 PM
:Dcám ơn dai ka nhiều,để em thử nghien cứu 1 cái xem

dung43
06-10-2009, 12:40 PM
Tiếp về điều khiển từ xa nào.
Hôm nay post tiếp cho anh em mạch và code
Trong mạch sử dụng các linh kiện chính sau:
Vi điều khiển 89C2051
Cách ly quang MOC3020 (3,5k/con)
Triac MAC97A6 đóng mở dòng điện cho các cuộn dây
Còn những linh kiện khác anh em chắc nhìn quen rồi

http://i896.photobucket.com/albums/ac170/dung43/Main.jpg

dung43
06-10-2009, 12:45 PM
Anh em nếu làm thì chú ý khi hàn con MAC97A6, nhớ hàn theo đúng chân MT1 và MT2. Trước tôi tưởng 2 chân này như nhau, nhưng hàn đảo đầu đi thì bị cháy.
Ngoài ra, nếu cẩn thận hơn, giữa chân MT1 và MT2 anh em nên làm thêm cái dập xung cho cuộn dây.
Mắc (tụ nối tiếp trở) // MT1 và MT2
Tụ gốm 103 2KV
Trở 2W 390 ôm

dung43
06-10-2009, 12:48 PM
Còn đây là code



//*****************************
// for Sony remote only

//*****************************

#include <AT89x051.H>
//#include <intrins.H>

#define pow P3_1 // in
#define speed P3_0 // in
#define timer P3_3 // in
#define nature P3_4 // in

#define power_IR 212 // IR receiver
#define speed_IR 142 // IR receiver
#define timer_IR 210 // IR receiver
#define nature_IR 244 // IR receiver

#define speed3 P1_0 //out triac
#define speed2 P1_1 //out triac
#define speed1 P1_2 //out triac

#define timer1 P1_4 //timer out led
#define timer2 P1_5 //timer out led
#define timer3 P1_6 //timer out led
#define timer4 P1_7 //timer out led

#define alarm P1_3 //loa chip out

unsigned char tocdo,hengio,kt_hengio,power;
unsigned char tick,wind,anti_vib,enable_IR;
unsigned int tick1,tick2,current_time,wind_time,time_off;
unsigned char rev_IR,save_rev;



void chip() //tao am thanh 2KHz
{
unsigned int i,m;
for(m=0;m<250;m++)
{
alarm=0;
for(i=0;i<20;i++)
{;}
alarm=1;
for(i=0;i<20;i++)
{;}
}
}



void timer1_ISR (void) interrupt 3
{
tick1++; tick2++; //100 us
}



void external_ISR (void) interrupt 0
{
tick2=0;
rev_IR = 0x01;
bit_1:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;}
while((P3_2 == 0)&&(tick2<250)) {;}
bit_0:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;}
while((P3_2 == 1)&&(tick2<250)) {;}
tick1=0;
while(tick1<7) {;}
if(P3_2 == 0) {rev_IR <<= 1; rev_IR |= 0x01; goto bit_1;}
if(P3_2 == 1) {rev_IR <<= 1; rev_IR |= 0x00; goto bit_0;}
end_rev:
//tick1=0;
//while(tick1<70) {;}
//_nop_();
EX0=0; //chi lay 7 bit lenh, bo qua 5 bit dia chi
}


void timer0_ISR (void) interrupt 1
{
// with xtal 12.000MHz
// 3CAF(15535) - 50ms
// D8EF(55535) - 10ms

// with xtal 11.0592 MHz
// DC05 - 10ms
// FC17(64535) - 1ms
// FE0B(65035) - 0.5ms
// FF37(65335) - 0.2ms

TH0 = 0xDC;
TL0 = 0x05;
tick++;
anti_vib++;
enable_IR++;
if (tick >= 100) // 1 sec
{
current_time++;
wind_time++;
tick = 0;
}
}


void main (void)
{//-------------------------

// init system
TMOD = 0x21; // (TMOD: 0010 0001) Timer_1 8 bits auto reload. Timer_0 16 bits
TH1 = 255-100;
TL1 = TH1;
ET0 = 1; // Enable Timer 0 Interrupt
ET1 = 1; // Enable Timer 1 Interrupt
// EX0 = 1; // Enable External 0 Interrupt
EA = 1; // Global Interrupt Enable
PT1 = 1; // Priority timer_1
TR0 = 1; // Start Timer 0
TR1 = 1; // Start timer 1
P1 = 0x00; // set P1 lam dau ra
P3 = 0xff; // set P3 lam dau vao

save_rev=0xff;
//enable_IR=0;

// main loop
while(1)
{//*
kt_hengio=0;
hengio=0;
wind=0;
power=0;
tocdo=1;
speed1=speed2=speed3=1;
timer1=timer2=timer3=timer4=1;
alarm=0;
EX0 = 1; // Enable External 0 Interrupt

//********** ENABLE IR INTERRUPT AGAIN *************
// while(enable_IR > 100)
// { EX0=1; enable_IR=0; }
//**************************************************



//**************** POWER ON ************************
if((!pow) || (save_rev==power_IR)) // nut on/off duoc an lan dau
{
chip();
speed1=0; // speed1 is defauled
power++;
while(!pow) {;}
anti_vib=0;
while(anti_vib<20)
{;}
save_rev=0xff;
EX0=1;
}
//*************************************************



//**************************************************
//**************************************************
while(power)
{//**



//******************* POWER OFF ************************
if((!pow) || (save_rev==power_IR)) // nut on/off duoc an lan tiep theo
{
chip();
chip();
chip();
power--;
while(!pow) {;} //anti vibration contact
anti_vib=0;
while(anti_vib<20)
{;}
save_rev=0xff;
EX0=1;

}
//**************************************************



//******************** SPEED ************************
if((!speed) || (save_rev==speed_IR)) // button speed
{///***
chip();
tocdo++;
if(tocdo > 3)
{ tocdo=1;}
dungimi:switch(tocdo)
{////
case 1: speed1=0; speed2=1; speed3=1;
break;
case 2: speed1=1; speed2=0; speed3=1;
break;
case 3: speed1=1; speed2=1; speed3=0;
break;
}////
while(!speed) {;}
anti_vib=0;
while(anti_vib<20)
{;}
save_rev=0xff;
EX0=1;

}///***
//**************************************************



//********** ENABLE IR INTERRUPT AGAIN *************
while(enable_IR > 100)
{ EX0=1; enable_IR=0; }
//**************************************************




//****************** CHECK TIMER *******************
if(kt_hengio == 1)
{
if(current_time > time_off)
{ chip(); chip(); chip(); power--; goto off; }
}
//**************************************************




//******************* TIMER ************************
if((!timer) || (save_rev==timer_IR)) //timer function
{
chip();
kt_hengio=1;
current_time=0;
hengio++;
if(hengio > 4)
{ hengio=0; }

switch(hengio)
{
case 0: kt_hengio=0;
timer1=1; timer2=1; timer3=1; timer4=1; break;
case 1: time_off=1800; // 30 minutes
timer1=0; timer2=1; timer3=1; timer4=1; break;
case 2: time_off=3600; // 1 hour
timer1=1; timer2=0; timer3=1; timer4=1; break;
case 3: time_off=7200; // 2 hours
timer1=1; timer2=1; timer3=0; timer4=1; break;
case 4: time_off=14400; // 4 hours
timer1=1; timer2=1; timer3=1; timer4=0; break;
}

while(!timer) {;}
anti_vib=0;
while(anti_vib<20)
{;}
save_rev=0xff;
EX0=1;

}
//************************************************** **




//******************** NATURE ************************
if((!nature) || (save_rev==nature_IR)) // nature wind function
{
chip();
wind++;
if(wind>1)
{
wind=0;
goto dungimi; // return speed after turn-off nature wind function
}
while(!nature) {;}
anti_vib=0;
while(anti_vib<20)
{;}
save_rev=0xff;
EX0=1;

}
//**************************************************




//**************************************************
if(wind) // if nature wind function is turned-on
{
switch(tocdo)
{
case 1: if(wind_time>5)
{speed1 =~ speed1; wind_time=0;}
break;
case 2: if(wind_time>10)
{ speed2 =1;
anti_vib=0;
while(anti_vib<5)
{;}
speed1=0;
wind_time=0;}
if(wind_time>7)
{ anti_vib=0;
while(anti_vib<5)
{;}
speed2=0;}
if(wind_time>3)
{ anti_vib=0;
while(anti_vib<5)
{;}
speed1=1;}
break;

case 3: if( wind_time>10)
{ speed3 =1;
speed1 =1;
anti_vib=0;
while(anti_vib<5)
{;}
speed2 =0; //chuyen sang so 2
wind_time=0;

}
if(wind_time>7)
{ speed3 =1;
speed2 =1;
anti_vib=0;
while(anti_vib<5)
{;}
speed1=0; //chuyen sang so 1
goto exit;
}
if(wind_time>3)
{ speed1 =1;
speed2 =1;
anti_vib=0;
while(anti_vib<5)
{;}
speed3 =0; //chuyen sang so 3
}
exit: break;

}
}
//**************************************************


}//**

//**************************************************
//**************************************************


off:
alarm=0;

}//* end while()

}//------------------end

dung43
07-10-2009, 01:22 PM
Hôm trước vẽ mạch còn sơ sài, nay sửa lại gửi mọi người

http://i896.photobucket.com/albums/ac170/dung43/MAINSUA.jpg

Mạch này làm xong, hàn linh kiện, nạp code cho chip là chạy liền
Code và mạch sẽ gửi sau

dung43
07-10-2009, 01:23 PM
Đây là code đã dịch ra file.HEX

http://www.mediafire.com/?3d1jhcljndj

dung43
07-10-2009, 01:25 PM
Đây là mạch vẽ bằng Protel99SE

http://www.mediafire.com/?nnynyyn4thz

-------------------------------------------------------------------

Đây là mạch vẽ bằng Protel DXP

http://www.mediafire.com/?zde5n2jn0od

dung43
08-10-2009, 06:42 PM
Sắp có 1 phiên bản điều khiển từ xa cực kỳ nhỏ gọn. Kích thước bằng 2 ngón tay. Mọi người có thể gắn nó vào bất cứ thiết bị cần điều khiển nào như đèn neon, quạt cây....

Điểm khiến nó trở nên nhỏ gọn là mình đã bỏ đi được khối nguồn cồng kềnh, không cần phải có 1 biến áp hạ áp 220-->12V nữa.

dung43
15-10-2009, 10:48 PM
Sau khi tham khảo trên mạng. tôi đã tìm được cách tối ưu mạch điều khiển từ xa sử dụng điều khiển TV. Do sử dụng trực tiếp nguồn 5V được hạ áp từ 220VAC nên bỏ qua được biến áp và opto-triac.
Đây là 1 mạch đk đa năng, mỗi mạch sẽ điều khiển 1 thiết bị điện trong nhà. Tùy thuộc vào công suất của thiết bị cần điều khiển mà ta sẽ chọn loại triac có công suất phù hợp. Hơn nữa mạch rất nhỏ gọn nên có thể giấu trong các thiết bị (ví dụ điều khiển đèn neon thì giấu trong máng đèn, chỉ lộ con IR receiver ra ngoài)

Đây là nguyên lý của mạch (CHÚ Ý, MẠCH NÀY DO KHÔNG CÓ BIẾN ÁP CÁCH LY NÊN ĐỤNG VÀO PHẦN MẠCH KHI CÓ ĐIỆN LÀ BỊ GIẬT)

Mạch in chỉ bé bằng 2 đầu ngón tay

http://i896.photobucket.com/albums/ac170/dung43/DKTXjJPG.jpg

nhanbmtbd
17-10-2009, 04:46 PM
dung43 oi, minh rat khoai bo dktx bang remot ti vi sony; ban huong dan cho minh cach lam mot bo de xai nhe. minh cam on nhiu.
mail cua minh: ngocnhandaklak@yahoo.com.vn

ATK
19-10-2009, 03:26 AM
Có bác nào làm nó trên ATMega 16 ko!? Help!

dung43
19-10-2009, 08:05 AM
- Bạn "nhanbmtbd" có hỏi cách làm 1 bộ để xài. Về phần cứng và code mình đã đưa cả lên rồi. Nếu thắc mắc gì thêm trong quá trình làm mạch thì bạn trao đổi trực tiếp trên diễn đàn, biết đâu câu hỏi của bạn cũng là câu hỏi của người khác đang theo dõi chủ đề này
- Còn bạn ATK, tôi cũng tìm trên web rồi. Không thấy ai hướng dẫn làm đktx dùng Atmega16 cả. Vậy chỉ còn cách tự mày mò thôi. Để bớt những thứ râu ria trong quá trình học về Atmega16, bạn tập trung vào 2 thứ:
+) timer - bạn phải nắm rõ được cách dùng timer trong atmega16
+) external interrupt - Ngắt ngoài.

dung43
19-10-2009, 08:50 PM
Mạch in đây.
Mạch này tôi cũng tham khảo trên mạng nên cũng khá nhỏ gọn. Còn về phần code, dựa trên cơ sở nắm rõ được nguyên lý của đktx. Chúng ta hoàn toàn có thể nhúng code mà tôi đã up lên diễn đàn để nạp cho con 89 này.

http://i896.photobucket.com/albums/ac170/dung43/DKTX1jJPG.jpg

dung43
28-10-2009, 02:43 PM
Rảnh rỗi ngồi vẽ lại cái mạch đk từ xa trên cho dễ nhìn. Mình sửa lại vài chỗ cho phù hợp với phần lập trình. Nhưng trước khi gửi hình lên phải nói qua về cái mạch chứ nhỉ.

Mạch vẫn sử dụng chíp 89C2051. Dùng trực tiếp 220VAC hạ xuống 5VDC không qua biến áp (Chú ý chỗ này nhé, cắm điện là sờ vào bị giật, kể cả 5V)

Có 2 điểm đáng chú ý trong mạch này:
+) Thứ nhất là mạch dùng IC 24C02 để lưu trạng thái của mạch khi mất điện. IC 24C02 là IC EEPROM, đọc/ghi nối tiếp. Mỗi lần thay đổi trạng thái của thiết bị (ON/OFF) sẽ được lưu vào IC này. Khi có điện trở lại, mạch sẽ đọc trạng thái lưu ở trong IC 24C02 ra.
Ví dụ: Đang bật quạt mà tự dưng mất điện, vậy khi có điện trở lại thì quạt sẽ tự động bật
Chú ý: Nếu ta kô muốn dùng đến chức năng này thì bỏ con IC này đi, khi đó mạch sẽ được mặc định là khi có điện trở lại sẽ luôn tắt.
+) Thứ 2 là mạch có công tắc chọn thiết bị(DIP SWITCH). Lý do để đưa cái này vào là vì mỗi thiết bị cần điều khiển sẽ dùng đến 1 nút bấm trên bộ ĐKTX. Vậy mỗi thiết bị ta phải nạp 1 code khác nhau (khác ở phần nhận mã phím bấm). Như thế sẽ bất tiện. Do vậy để tất cả các thiết bị dùng chung 1 code thì ta phải định địa chỉ cho thiết bị đó thông qua 4 cái công tắc gạt (tương đương với 16 thiết bị)

http://i896.photobucket.com/albums/ac170/dung43/selectdevice.jpg

Ví dụ: Ta có 2 thiết bị cần đk là quạt và đèn. ta muốn dùng nút số "1" trong bộ ĐKTX để đk quạt (thiết bị số 1), dùng nút số "2" để đk đèn (thiết bị số 2). Ta làm như sau:
Đối với mạch đk quạt. Gạt 4 công tắc SW3 = ON; SW2 = ON; SW1 = ON; SW0 = OFF.
Với mạch đk đèn, ta gạt 4 công tắc SW3 = ON; SW2 = ON; SW1 = OFF; SW0 = ON.
(ON là nối đất, OFF là VCC)
Khi bắt đầu hoạt động, chương trình sẽ đọc trạng thái của 4 công tắc này đầu tiên. Sau khi đọc xong nó sẽ "hiểu" nó là thiết bị thứ mấy. Ở đây đối với quạt nó đọc về 4 bit (tương đương với 4 trạng thái công tắc) là 0-0-0-1. Tức là thiết bị số 1. Đối với đèn đọc về là 0-0-1-0. tức là thiết bị số 2.

OK. Như vậy là kô phải sửa lại code ta vẫn có thể đk được riêng biệt từng thiết bị. Nếu thích ta có thể chuyển công tắc gạt để 1 nút ấn trên bộ ĐKTX có thể đk cho nhiều thiết bị, và đổi thứ tự các thiết bị, ví dụ ở trên là nút số "1" đk quạt, nút số "2" đk đèn. Nhưng có thể đổi thành nút số "1" đk đèn, nút số "2" đk quạt.

dung43
28-10-2009, 02:45 PM
Ngại vẽ schematic bằng protel quá, vẽ tay vậy. Máy ảnh thì bé nên chụp thành 2 phần. Chú ý là các SW0; SW1; SW2; SW3 đối tên cho nhau thành SW3; SW2; SW1; SW0.

http://i896.photobucket.com/albums/ac170/dung43/102809134853.jpg
http://i896.photobucket.com/albums/ac170/dung43/102809134940.jpg

dung43
28-10-2009, 02:48 PM
Đây là mạch in

http://i896.photobucket.com/albums/ac170/dung43/REMOTEDUNG.jpg

dung43
28-10-2009, 02:50 PM
Còn code thì mình đang chỉnh sửa, xong rồi gửi liền. Gửi luôn cả mạch in qua mediafire. Vẫn dùng lại cái code mà trước mình đã post nhưng sửa lại 1 tý.
Mạch này tuy nhỏ gọn nhưng lại chỉ có chức năng ON/OFF. Không có nút bấm, không có hẹn giờ...

vannguyen_vn24
30-10-2009, 11:46 PM
em dang lam mot bai ve thu phat song hong ngoai . gom bo phat va thu hong ngoai (dung led) dung nut nhan (4017) de dieu khien 10 led , nhan nut tung den sang chuyen tiep toi led cuoi cung .(co the trang thai binh thuong 1 den luon sang) , mong cac bac giup ,cam on nhieu !!!!

taduc
03-12-2009, 09:24 PM
Còn code thì mình đang chỉnh sửa, xong rồi gửi liền. Gửi luôn cả mạch in qua mediafire. Vẫn dùng lại cái code mà trước mình đã post nhưng sửa lại 1 tý.
Mạch này tuy nhỏ gọn nhưng lại chỉ có chức năng ON/OFF. Không có nút bấm, không có hẹn giờ...

anh ơi mau copy code lên cho em tham khảo với.Cảm ơn anh nhìu nhìu;$;$;$

tintin_cute102
25-12-2009, 04:50 PM
minh dang can lam mot mach dieu khien tu xa may quat dien,nhung yeu cau la không được sử dụng các vi mạch chuyên dụng, các vi xử lý và vi điều khiển),vay thi minh co the su dung so do nguyen ly nhu da up o tren ko, giai dap zum minh nha,thank rat nhieu

ngocyenlyyb
14-01-2010, 11:20 AM
Chào các bạn mình là người mới tham gia diễn đàn và mình rất thích chủ đề nay! Mĩnh cũng muốn chế một cái! Nhưng mình là người mới vào nghề bác dung43 viết nhìu bài rất hay tui rất thích làm một cái như bác nhưng không sao đọc được mấy file bạn poth bạn có thể cho file ảnh lên không? Xin cảm ơn!

thanhvu_tv87
17-01-2010, 10:26 AM
anh ơi mau copy code lên cho em tham khảo với.Cảm ơn anh nhìu nhìu;$;$;$
dung43 oi, em rất rất thích mach dktx đó lám! em đag làm đồ án dktx...anh có thể hướng dẩn em không? em chỉ mới biết lập trình ASM chút chút và mô phỏng bằng proteus a...nếu có thể gui qua mail(thanhvu_tv87@yahoo.com.vn)..em nên bắt đầu từ đâu đây?..em thật sự rất muốn làm!

son
17-01-2010, 12:54 PM
Bài viết của anh rất hay. Hôm nay em mới đọc được, nhất định khi nào có thời gian em sẻ nghiên kứu để làm. thanks anh Dũng rất nhiều!

truongtulong
20-01-2010, 04:09 PM
bác ơi gửi cho em xem cái mạch nguyên lý với địa chỉ mail của em là truongquocthuong@gmail.com. Cám ơn bác

dung43
24-01-2010, 09:48 PM
chà chà, lâu không vào diễn đàn thấy anh em quan tâm đến mảng này quá. về cái điều khiển từ xa này có 2 phần: mạch in và code
cả 2 cái đó mình đã up hết lên rồi mà (mediafire).
còn mạch nguyên lý và code C thì mình cũng đã up hết luôn rồi. các link đều còn ngon cả, chưa link nào die cả.
hehe

hoangnam555
19-02-2010, 08:13 PM
Nếu em muốn tìm hiểu chi tiết về cái mạch đó thì trước hết hãy tìm hiểu về vi điều khiển. Về lập trình keilC, và vẽ mạch.
Còn nếu muốn làm 1 cái để dùng thì anh gửi vào mail cho code, mạch in.

em cũng muốn làm 1 cái anh có thể gửi cho em trọn bộ được không!
mailcua3 em là: hoangnam6884@yahoo.com.vn
em cảm ơn anh trước nha!!!

quan quyen
02-03-2010, 07:00 PM
dũng 43 ơi.code quạt cậu đăng trên mình copy về và dùng keil để dịch nhưng mà mình thấy bị lỗi.cậu cho mình xin code đã chạy ổn định nhé.code đuôi hex mà cậu đã đổi đó mình đã nạp vào con 89c2051 nhưng mà dùng tay nhấn nút thì chuẩn còn dùng khiển sony thì lúc được lúc không.đèn tín hiệu nhận vẫn sáng nhưng không thấy chuyển số cậu à, mail của mình là: quanquyen80@yahoo.com

dung43
04-03-2010, 01:28 PM
mọi người dùng keilC gì mà dịch kô ra nhỉ, hnay mình up toàn bộ code lên đây

http://www.mediafire.com/file/gzknqyjwowm/Quat + Remote Sony.rar


code đuôi hex mà cậu đã đổi đó mình đã nạp vào con 89c2051 nhưng mà dùng tay nhấn nút thì chuẩn còn dùng khiển sony thì lúc được lúc không.đèn tín hiệu nhận vẫn sáng nhưng không thấy chuyển số cậu à,

ko biết bạn dùng khiển sony loại nào, bạn dùng loại như mấy tấm ảnh mình đưa lên diễn đàn ấy,
hoặc có thể do con mắt nhận hồng ngoại có vấn đề, bạn hàn song song với 2 chân nguồn của con mắt nhận 1 con tụ 104 thử xem.
bạn nói đèn nhận tín hiệu vẫn sáng là đèn gì thế, bạn mắc nối tiếp với chân ra của con mắt nhận à, còn nếu đèn tín hiệu chuyển số trên mạch thì ok rồi đấy,

dotdac
07-03-2010, 01:34 AM
void external_ISR (void) interrupt 0
{
tick2=0;
rev_IR = 0x01; // rev_IR = 000 0001
bit_1:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;} //rev_IR = 1xxx xxxx (da nhan du 7 bit command)
while((P3_2 == 0)&&(tick2<250)) {;}
bit_0:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;}
while((P3_2 == 1)&&(tick2<250)) {;}
tick1=0;
while(tick1<7) {;}
if(P3_2 == 0) {rev_IR <<= 1; rev_IR |= 0x01; goto bit_1;} // bit_x = 1
if(P3_2 == 1) {rev_IR <<= 1; rev_IR |= 0x00; goto bit_0;} // bit_x = 0

/*
| MSB LSB |
--------------------------------------------------
rev_IR = 0 0 0 0 0 0 0 1
rev_IR = 0 0 0 0 0 0 1 bit1
rev_IR = 0 0 0 0 0 1 bit1 bit2
rev_IR = 0 0 0 0 1 bit1 bit2 bit3
rev_IR = 0 0 0 1 bit1 bit2 bit3 bit4
rev_IR = 0 0 1 bit1 bit2 bit3 bit4 bit5
rev_IR = 0 1 bit1 bit2 bit3 bit4 bit5 bit6
rev_IR = 1 bit1 bit2 bit3 bit4 bit5 bit6 bit7 (rev_IR >= 128 ; stop INT0 va thoat)
*/

end_rev:
EX0=0; //chi lay 7 bit command, bo qua 5 bit address
}

Xin lỗi, mình vẫn chưa hiểu đoạn giải mã này của bạn lắm :
tick2 < 250 , tick1 < 7 ?
Và mấy vòng while , lệnh sau while ...

Bạn giải thích kỹ giùm mình được không ?
Mình thấy phần dịch bit này chỉ thực hiện khi tick1>7 ( để thoát whlie )
if(P3_2 == 0) {rev_IR <<= 1; rev_IR |= 0x01; goto bit_1;} // bit_x = 1
if(P3_2 == 1) {rev_IR <<= 1; rev_IR |= 0x00; goto bit_0;} [COLOR="MediumTurquoise"]// bit_x = 0
Hay như mình thấy khi bit ở Remote = 1 thì mới thoát :
while((P3_2 == 1)&&(tick2<250)) {;}
Thì phần dịch mới làm.

Mong bạn giải thích thật kỹ giùm mình.

Cảm ơn nhiều !!

dung43
07-03-2010, 04:04 PM
Trước hết bạn xem lại phần frame timing

http://i896.photobucket.com/albums/ac170/dung43/Bits.jpg

Khi truyền, đktx sẽ phát ra các bit có frame timing như sau
- bit START gồm 4T mức "1", mỗi T là 600uS
- bit 0 gồm 2T: 1T mức "0" và 1T mức "1"
- bit 1 gồm 3T: 1T mức "0" và 2T mức "1"

Khi nhận, các bit sẽ bị đảo dấu. có frame timing như sau

http://i896.photobucket.com/albums/ac170/dung43/frametimingrev.jpg

- bit START gồm 4T mức "0", mỗi T là 600uS
- bit 0 gồm 2T: 1T mức "1" và 1T mức "0"
- bit 1 gồm 3T: 1T mức "1" và 2T mức "0"

Dựa vào frame timing nhận, ta có thể tiến hành lấy mẫu chân P3_2 để xác định được đâu là bit 0 và đâu là bit 1 (từ đây ta chỉ quan tâm đến frame timing nhận thôi)

Chú ý rằng dù bit "0" hay bit "1" thì đều có 1T ở đầu là mức "1". ta tạm gọi 1T đặc biệt này là "X"

tick2=0; while(tick2<250) {;} // là tạo ra 1 trễ, mỗi khi hết 100uS thì tick1 và tick2 tăng lên 1 (xem đoạn gắt timer1). Như vậy đoạn này tạo ra (100*250 uS)


------------------------------------------------------------------------------------
void external_ISR (void) interrupt 0
{
tick2=0; //bắt đầu tính trễ
rev_IR = 0x01; // rev_IR = 000 0001 giá trị khởi tạo ban đầu cho rev_IR


bit_1:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;} // Nếu đã nhận đủ 7 bit thì thoát
while( (P3_2 == 0)&&(tick2<250)) {;}
// Chờ cho hết bit START (P3_2 về "1"). Nếu vì lý do nào đó, P3_2 không về "1" thì sau (100*250)uS sẽ thoát, nếu không chương trình sẽ bị treo ở đây.


bit_0:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;} // Nếu đã nhận đủ 7 bit thì thoát
while( (P3_2 == 1)&&(tick2<250)) {;}
// Chờ cho "X" về "0" và bắt đầu lấy mẫu ở chân P3_2 (đọc bit)


tick1=0;
while(tick1<7) {;} //tạo trễ 700uS
if(P3_2 == 0) {rev_IR <<= 1; rev_IR |= 0x01; goto bit_1;} // bit_x = 1

//Nếu chân P3_2 = 0 tức là nhận được bit "1". Nếu nhận được bit 1, ta phải chờ cho P3_2 về "1" rồi chờ tiếp cho P3_2 về "0" rồi mới đọc bit tiếp theo, chính vì thế mới "goto bit_1" (xem ảnh dưới)


if(P3_2 == 1) {rev_IR <<= 1; rev_IR |= 0x00; goto bit_0;} // bit_x = 0

//Nếu chân P3_2 = 1 tức là nhận được bit "0". Nếu nhận được bit 0, ta chỉ phải chờ cho P3_2 về "0" rồi mới đọc bit tiếp theo, chính vì thế mới "goto bit_0" (xem ảnh dưới)


http://i896.photobucket.com/albums/ac170/dung43/sampling.jpg

/*
| MSB LSB |
--------------------------------------------------
rev_IR = 0 0 0 0 0 0 0 1
rev_IR = 0 0 0 0 0 0 1 bit1
rev_IR = 0 0 0 0 0 1 bit1 bit2
rev_IR = 0 0 0 0 1 bit1 bit2 bit3
rev_IR = 0 0 0 1 bit1 bit2 bit3 bit4
rev_IR = 0 0 1 bit1 bit2 bit3 bit4 bit5
rev_IR = 0 1 bit1 bit2 bit3 bit4 bit5 bit6
rev_IR = 1 bit1 bit2 bit3 bit4 bit5 bit6 bit7 (rev_IR >= 128 ; stop INT0 va thoat)
*/

end_rev:
EX0=0; //chi lay 7 bit command, bo qua 5 bit address
}


Hơi lằng nhằng 1 tý nhưng nó phải như thế bạn ạ

dotdac
08-03-2010, 08:36 AM
while(tick1<7) {;} //tạo trễ 700uS
if(P3_2 == 0) {rev_IR <<= 1; rev_IR |= 0x01; goto bit_1;} // bit_x = 1

//Nếu chân P3_2 = 0 tức là nhận được bit "1". Nếu nhận được bit 1, ta phải chờ cho P3_2 về "1" rồi chờ tiếp cho P3_2 về "0" rồi mới đọc bit tiếp theo, chính vì thế mới "goto bit_1"

bit_1:
if(rev_IR >= 128) {save_rev = rev_IR; goto end_rev;} // Nếu đã nhận đủ 7 bit thì thoát
while( (P3_2 == 0)&&(tick2<250)) {;}

Nhưng lúc này tick2>250 mất ròi, nên có khi nào nó đọc luôn mà không chờ ??

http://www.freeimagehosting.net/uploads/c1d4af3989.jpg (http://www.freeimagehosting.net/)

Những phần khác hoàn toàn hiểu rồi bác .
hì, tại em dốt quá

lequangvien
10-03-2010, 11:16 AM
chào các anh.em là một người mới học điện tử.em đang fải làm ra 1 chiếc quạt điều khiển từ xa bằng tia hồng ngoại.em đã đọc được bài của anh Dũng post lên.em thấy rất có ích cho em,nhưng em còn chưa rõ lắm.mọi nhười có thể chỉ rõ cho em 1 chút nữa được không? em cảm ơn rất nhiều.nếu có gì thì mọi người gửi email cho em được ko?email của em là:paintmylove1188@yahoo.com

dung43
13-03-2010, 06:49 PM
Bạn "dotdac" không để ý rằng cứ mỗi khi nhảy vào ngắt thì tôi đặt tick2=0. Nghĩa là tôi khống chế trong chu kỳ đọc đó kiểu gì thì kiểu cũng không được vượt quá 100*250(uS). Lần đọc sau sẽ lại tính trễ đó từ đầu

Giá trị 100*250 là đặt khá lớn đó. Vì mỗi lần đọc tín hiệu từ remote chỉ mất vài mS thôi.

Còn cái hình bạn vẽ lại là sai so với hình của tôi, vì thời gian tính trễ 700 mS chỉ được tính khi xung dương bắt đầu đi xuống của bit 0 (hoặc bit 1)

ANHTAI_4532
15-03-2010, 02:55 AM
Em đang làm đồ án điện tử. Đề tài của em là thiết kế và thi công mạch loa vi tính sử dụng ic TDA 2030. Và điều khiển volume từ xa cho nó bằng khối thu và phát bằng tia hồng ngoại. Mong a Dung43 và các anh em giúp em! Thank các anh em trước.....

kebuomhoa
17-03-2010, 11:13 PM
THẤY ANH LẬP TRÌNH C RÙI NHƯNG MUỐN LÀM BẰNG ASEM THÌ SAO HẢ ANH?e ĐANG LÀM ĐỀ TÀI NÀY NHƯNG LÀ ĐIỀU KHIỂN TV THÌ CÁCH LÀM NHƯ THẾ NÀO NHỈ

nghia
18-03-2010, 04:27 AM
Thay bộ mã điều khiển bằng chuỗi mã của loại TV tương ứng là được.

votran
22-03-2010, 09:27 AM
dung43 ơi. Mình cũng đang nghiên cứu về cái đề tài này. bạn có thể send cho votran cái sơ đồ nguyên lí và mạch nạp được ko? ( votran_dn@yahoo.com)

votran
22-03-2010, 09:39 AM
cái mạch của bạn điều khiển khoảng bao nhiêu mét vậy bạn. Quạt mà bạn dùng là quạt gì vậy. Bạn có thể giải thích nguyên lí hoạt động của mạch ko?

votran
23-03-2010, 07:28 AM
ai có tài liệu về triac ko? mình đang tìm hiểu về nó

dung43
23-03-2010, 08:02 AM
Giải thích từ A đến Z rồi mà
Bạn xem lại từ đầu đi
Quạt mình dùng là quạt điện thường
Khoảng cách điều khiển TV bao nhiêu thì của mình bấy nhiêu

votran
24-03-2010, 03:07 AM
dung ơi!chắc bạn có phần mềm protel99se và proteldxp. Bạn có thể gửi lên ko. mình tìm ở bác google và diễn đàn này rồi mà ko được. Thank bạn.

votran
06-04-2010, 03:39 PM
cái cổng com của bạn là cái gì vậy bạn? mình mới học nên chưa hiểu? co thể thay thế bằng con 89c51 được ko bạn?

votran
07-04-2010, 04:00 AM
http://bmtbd.uct.edu.vn/upload/index.php
mình ko biết cái cổng com đó là cái gì mong bạn giúp cho

votran
07-04-2010, 04:04 AM
http://bmtbd.uct.edu.vn/upload/index.php

tiensi06
07-04-2010, 09:36 PM
em la sv dien tu moi nen chua co nhieu kinh nghiem.ma e lai thich mach dk tu xa lam .a co the giup e voi dc k.dac biet la phan phan chuong trinh a co thi cho e thao khao voi.thank a nhieu.mail cua e :haytintoibannhe_1106@yahoo.com

votran
08-04-2010, 08:18 PM
cổng com trong mach được nối với gì vậy bạn

huytudl2
15-04-2010, 12:12 AM
Anh dung43 ơi,cho em hỏi cái bộ thu hồng ngoại anh dùng IC gì vậy ?
TSOP4838,TSOP4836...
Mình có thể dùng cái nào cũng được hả anh?

dung43
15-04-2010, 08:27 AM
cổng com trong mach được nối với gì vậy bạn

Trong mạch mình gửi làm gì có cổng com nào nhỉ


Anh dung43 ơi,cho em hỏi cái bộ thu hồng ngoại anh dùng IC gì vậy ?
TSOP4838,TSOP4836...
Mình có thể dùng cái nào cũng được hả anh?

Dùng loại mà nhìn thẳng vào thì chân GND ở giữa, chân VCC ở bên phải, chân OUT ở bên trái

huytudl2
15-04-2010, 10:14 AM
IC thu hồng ngoại mà chân GND ở giữa, chân VCC ở bên phải, chân OUT ở bên trái như anh nói có thể làm việc với nhiều tần số mang khác nhau được không ah,nghĩa là tín hiệu hồng ngoại phát ra với tần số mang là 38KHz,hay 36KHz hay 40KHz... thì IC đó vẫn thu đúng mã lệnh có phải không ạ?

dung43
15-04-2010, 10:44 AM
Mình dùng đktx sony có sẵn nên không để ý lắm, sóng mang hình như là 36KHz. Phần code chỉ là giải mã các bit 0 và 1. Còn việc tách các bit đó ra khỏi sóng mang thì con IC thu giải quyết. Bạn chọn loại ĐKTX nào thì tra trên google xem sóng mang của nó là bao nhiêu rồi dựa vào đó để chọn IC thu thích hợp. Ngoài ra mỗi đktx có 1 mã khác nhau. Biết được cách mã hóa thì sẽ biết được cách giải mã và sử dụng mã đó để điều khiển cái mình muốn

vanduy132
15-04-2010, 11:38 PM
cho em hỏi tại sao khi hàn đảo đầu 2 chân MT1 với MT2 thì bị cháy triac vậy ?

huytudl2
16-04-2010, 01:02 AM
Anh dung43 cho hỏi mình có thể dùng vđk để phát sóng hồng ngoại để làm cái điều khiển đa năng có thể điều khiển nhiều loại tivi không???
Và nếu được thì mình phát sóng mang và mã lệnh thế nào???
Sóng mang thì mình có thể dùng pwm, nhưng làm sao để phát sóng mang và mã lệnh trên cùng 1 chân của vđk???
Em đang làm cái đề tài về điều khiển đa năng điều khiển nhiều thiết bị nhưng đang vướng mắc ở chỗ chưa biết phát sóng mang cùng với mã lệnh như thế nào???
Mong anh chỉ giáo.
Thanks.

dung43
16-04-2010, 08:31 AM
Muốn làm điều khiển đa năng, việc đầu tiên là bạn sưu tập tất cả các đặc tính (mã hóa và tần số sóng mang) của các điều khiển mà bạn muốn chế tạo. Tất nhiên những cái này trên mạng có cả
Ví dụ: Bạn muốn chế đktx đa năng để ĐK tivi sony, điều hòa LG, đầu DVD pioner v.v.. thì bạn phải nắm được tất cả mã hóa và tần số sóng mang của đktx cho bọn nó.

Sau khi đã có 2 thông số trên bạn chỉ việc tạo ra 1 tần số sóng mang dùng timer của vđk, xuất ra 1 chân (đặt tên là chân A)
Tiếp đó tạ ra chuỗi các bit 0 và 1 (nhớ tạo ra 1 hàm trễ micro giây) rồi đưa ra 1 chân (tạm gọi là chân B)
AND 2 chân A và B với nhau (dùng con IC AND) hoặc bất kỳ cách nào có thể

Tôi nghĩ là bạn cứ bắt tay vào làm luôn, lỗi đâu sửa đấy, bí đâu hỏi đấy ...

huytudl2
16-04-2010, 02:50 PM
Em có tìm trên mạng được cái sơ đồ phát hồng ngoại dùng pic 16f630 như hình em gửi ở dưới.
Nhưng em không hiểu làm cách nào để phát được cả sóng mang và mã lệnh trên cùng 1 chân RC4 như trong hình.

dung43
16-04-2010, 03:30 PM
Như trên tôi nói, chân A tạo ra sóng mang. nhưng bạn có thể thay nó bằng 1 bít trong vdk. 1 bít nữa để làm tín hiệu chứa mã lệnh
Sau đó bạn AND 2 bít đó (bằng phần mềm) và kết quả của phép toán AND bạn xuất ra 1 chân

Để làm được như thế việc đầu tiên là phải nắm rõ timer trong vdk. Bạn tạo ra 1 sóng vuông có tần số 36 KHz (dùng timer).
Ví dụ:

Khai báo 1 bit là

bit bdata song_mang;

trong ngắt timer bạn chỉ việc

song_mang = ~song_mang;

Chu kỳ của timer bạn tính toán sao cho nó tạo ra được tần số 36 KHz

Tiếp đó khai báo 1 bít nữa là data

bit bdata data;

Bit data này thay đổi là 0 hay 1 tùy thuộc vào nó là bit 0 hay 1

Cuối cùng AND 2 bit này và xuất ra 1 chân của vdk. Chân P1_0 chẳng hạn

P1_0 = song_mang & data;

Đại loại như vậy

votran
22-04-2010, 06:10 AM
có thể kết hợp con 892051 với cặp ic 9148/9149 ko bạn dung43. Chỉ mình với được ko bạn.

votran
04-05-2010, 01:04 PM
ai có phần mềm protel dxp cho mình xin với.

trunghieuct
06-05-2010, 07:51 AM
Đây là mạch in

http://i896.photobucket.com/albums/ac170/dung43/REMOTEDUNG.jpg

Anh ơi cho em xin code dùng cho mạch. anh gửi qua gmail : nguyentrunghieuct@gmail.com.
`~

tuan_anh_1712
19-05-2010, 03:55 PM
Pac nao da lam mach dieu khien den tu xa roi cho em xin voi. Xin hau ta

huytudl2
24-05-2010, 11:06 PM
Lâu rồi bận quá không vào diễn đàn được.
Em xin giới thiệu một cách có thể phát cả sóng mang và mã lệnh trên cùng một chân của vdk,ví dụ e đang thực hiện với Pic16f877a:
-đầu tiên chúng ta dùng chế độ PWM để phát sóng mang với đúng duty cycle mình cần dùng ra chân ccp2 .
-Tiếp theo nếu mã lệnh đang là mức 1 thì ta đặt chân ccp2 thành chân đầu còn nếu mã lệnh đang là mức 0 thì ta đặt ccp2 thành đầu vào .
Sau đó chỉ cần khuếch đại tín hiệu ra ở chân ccp2 nữa là được thôi.

sky_4788
29-05-2010, 12:55 AM
mình rất thích làm về ĐKTX nhung chua biêt lam thế nào ca
bạn chỉ giup mình lập trình cả bên thu và bên phát thành 1 bộ, dùng AT9c2051,
ghi chú nguyến lý của việc thu phát nữa nhé
Thanks bạn rất nhiều

sky_4788
29-05-2010, 12:57 AM
bạn giup mình nhé, có thể Gửi vao mail của mình đc không "sky_4788@yahoo.com"

cuibap
29-05-2010, 12:43 PM
minh dang tim hieu lap trinh 89c2051, minh
mua mach nap o dau, bao nhieu tien

quynhvboy
01-06-2010, 12:59 AM
Anh dung oi nhờ anh chỉ giáo cho em với em đang muốn làm một cái mạch điều khiển từ xa cho bóng đèn mà ko biết làm thế nào cả bày cho em với thank anh nhìu

dientu
03-06-2010, 02:15 PM
anh dung oi, em moi hoc nen chua hieu : save_ IR, anti_vib la gi vay anh. sao ex0 co luc bang 0 luc bang 1

minh_trungtq
22-06-2010, 09:25 PM
em muốn chuyển cái phím ấn to lù lù của cái quạt bàn thành phím bấm nhỏ xíu được gắn trên quạt điều khiển bằng ic như trong quạt vinawin
cái nút ấn to của em hay bị kẹt bực quá!
anh chị nào biết mạch làm ơn giúp em với!
em xin cảm ơn!

em rất thick mạch dktx của anh nhưng mà Lập trình IC thì ở tỉnh em chưa có! mà mua ngoài thị trường lại càng khó hơn!
con IC của anh có thể thay bằng con nào bán trên thị trường đươc không ạ!
đợi tin anh

vanyen
09-07-2010, 09:51 AM
Bác nào có mạch điều khiển nhiệt độ dùng vi xư lý không mà dùng lm335 đấy.
mình làm mãi mà vẫn ko chạy

vanyen
09-07-2010, 09:55 AM
nếu bác nào có thì cho minh xin với. làm mà khi thay đổi nhiệt độ của con cảm biến mà điện áp ra vẫn không có thay đổi j hết

cocasau01
09-07-2010, 05:04 PM
Tham khảo ở đây:
http://bmtbd.uct.edu.vn/forum/showthread.php?t=744
Nếu không được bạn có thể đổi snag dùng LM35 nhé!

tuyenconan
29-08-2010, 04:09 PM
bạn à, mình muốn giải mã đktx tivi sony ma mình vẫn chưa làm được, bạn có thể hướng dẫn giúp mình cụ thể hơn được không bạn?
bạn có thể gửi qua mail cho mình được chứ, mail của mình là: tuyenduy32@gmail.com
cảm ơn bạn và những bài viết của bạn

tuyenconan
29-08-2010, 04:10 PM
bạn à, mình muốn giải mã đktx tivi sony ma mình vẫn chưa làm được, bạn có thể hướng dẫn giúp mình cụ thể hơn được không bạn?
bạn có thể gửi qua mail cho mình được chứ, mail của mình là: tuyenduy32@gmail.com
cảm ơn bạn và những bài viết của bạn
Hiện đang có mặt Thông Báo Nội Dung Xấu Sửa/Xóa nội dung

phone89
09-10-2010, 09:46 PM
Pác ơi em dang làm đồ an mach thu phát hồng ngoại dùng pt2248 va pt2249 .Em co mach nguyen ly thu phát rùi .em muốn dùng mạch đò để điều khiển đèn và quạt bàn bang relay nhưng k biết làm cac nào.mong Pác chỉ giáo jum
cám ơn Pác nhiều! .Mong sớm hồi âm

ngocdiepdl1
28-10-2010, 09:59 PM
anh oi anh co the gui cho em tai lieu ve dieu khien den ,quat bang remote tivi ko anh em rat can mail em la :phamngocdiep5614@gmail.com

ngocdiepdl1
28-10-2010, 10:01 PM
anh oi anh co the gui cho em tai lieu ve dieu khien den ,quat bang remote tivi ko anh em rat can mail em la : phamngocdiep5614@gmail.com

ngocdiepdl1
28-10-2010, 10:16 PM
minh dang can tai lieu dieu khien thiet bi dieen tu xa bang remote tivi ai co cho minh xin nha
mail minh la:phamngocdiep5614@gmail.com

phamtienduytbd48
29-10-2010, 11:28 PM
Anh dung43 ơi!Mạch phát hồng ngoại thì khả năng phát gân lắm.Anh đã làm về mach thu phát sóng Radio chua.Anh có thể post lên cho em được không?

linh
05-11-2010, 10:17 AM
không hiểu giờ 1 cặp 2248 và 2249 là bao tiền ấy bà con nhi ?

smilebaby
18-11-2010, 09:36 PM
Bác ơi!Trong mạch của bác ko thấy có cái swich để đk cho quạt quay. Em định thêm cái này nhưng chưa biết viết chương trình làm sao cả, bác giúp em với nhé. duytien2_9@yahoo.com.vn

lethanh39
09-12-2010, 10:37 PM
Đây là đoạn chương trình ngắt INT0

http://i896.photobucket.com/albums/ac170/dung43/interrupt.jpg

em cung~ muin' lam cai' mach giong nhu vay?
mong anh chi~ giup' voi
thanks

ntan10
13-01-2011, 02:53 PM
chào bác, e rat thich de tai cua bác và muốn làm 1 cái quạt như vậy, mong bác hướng dẫn hoàn chỉnh giúp e, cám ơn bác nhiều

trinh1212
25-02-2011, 11:37 AM
cho em xin cai manh ve va lap trinh dktx nha.nho anh giup do gium em voi lam cho biet

vietthai_k1a
26-02-2011, 02:17 PM
cảm on anh na
à anh cho em xin cả số điện thoại để trong quá trình lam có gì ko hiểu em còn hỏi

quangteo1990
26-03-2011, 09:34 PM
ban dung43 ơi mình đang làm cái đồ án điều khiển từ xa quạt bàn .Ở đây nó cho tự chọn linh kiện vậy theo bạn làm 1 mạch điều khiển từ xa nhỏ gọn đơn giản và điều khiển ở cự ly tương đối thì dùng IC gì vậy bạn ??? Bạn có thể chỉ cho mình đc ko???

thinhk43
06-04-2011, 10:16 PM
bạn ơi.mình đang làm về điều khiển quạt này.bạn có thể gửi cho mình mạch mô phỏng hoàn chỉnh được không?
nếu đc gửi vào gmail của mình nha: thinhk43@gmail.com
àh cho mình hỏi là cái này có dùng vđk pic đc không?nếu đc thì làm thế nào?
nhờ bạn chỉ giúp .thank bạn nhiều

bq1311
26-05-2011, 07:54 PM
chao anh dung43 em thuong hay di lam ve dem,em chi biet chut it ve dien tu thoi,em muon tu lam mot mach dieu khien tu xa bong den de di lam ve bat cho sang cai san,em tu tim hieu nhieu trang roi nhung ko co ket qua lam,mua sach mach dien li thu de tim hieu nhung lai het hang anh co the huong dan cho em qua email cua em bq1311@yahoo.com.vn,de lam duoc khong ?chi can dieu khien mot bong den thoi ma dung remote tv do.mong duoc su giup do

dinhcanhuct
15-06-2011, 11:56 PM
ở đây là bài được viết bằng asm còn nếu ai cần viết bằng C thì liên hệ với mình nhé
http://elab.com.vn/forum/showthread.php?43

nguyensan118
08-07-2011, 06:04 PM
anh dung43 cho em xin lại code đã dịch ra file hex dùng để điều khiển từ xa quạt được không anh.anh up lên rồi nhưng không biết ai đó đã xóa mất rồi.em vô tìm không thấy nữa.anh gửi qua địa chỉ mail này cho em được không anh;nguyensan118@yahoo.com.vn.em cám ơn anh nhiều

nguyensan118
10-07-2011, 08:35 PM
mấy bác lấy tài liệu rồi xóa mất cái code đi.viết chương trình được thì cần gì phải xin cho mệt
@.@

stungun
19-07-2011, 01:05 PM
chủ thớt đã bỏ mặc anh em.

germen
20-07-2011, 10:24 PM
chào các bác.em là dân ham mê điện tử.không biết cái sơ đồ đó e có thể liên hệ để mua nó được không vậy.đây là số đt liên lạc của e:01674205317.mong mấy bác có thể lien lac cho e đươc biết ví e ko có tg len web duoc

nguyensan118
24-07-2011, 08:00 PM
bài viết về mạch này rất hay có ứng dụng thực tiễn cao đến giờ vẫn còn nhiều người ủng hộ nhưng chủ của nó không biết đi đâu rồi.bỏ mặc anh em rồi,không có code nạp cho vi điều khiển thì cũng bó tay luôn.

dung43
25-07-2011, 10:40 AM
Lâu rồi ko vào diễn đàn thấy luồng này vẫn còn người quan tâm. Mình up lại code và mạch in để các bạn có thể tự làm 1 cái.

http://www.mediafire.com/file/gzknqyjwowm/Quat%20+%20Remote%20Sony.rar

nguyensan118
25-07-2011, 02:09 PM
anh ơi code này em thấy vượt quá dung lượng bộ nhớ của con vi điều khiển 89c2051 em nạp vô không được toàn báo lỗi không à.anh xem lại dùm em.

dung43
25-07-2011, 02:31 PM
sao lại vượt quá được, bạn chắc chắn là bạn nạp file "quat.hex" chứ?

nguyensan118
25-07-2011, 02:49 PM
trong tập tin của anh chỉ có duy nhất file quat.hex.em nạp vô không được toàn báo lỗi không anh à.mà em coi bộ nhớ của con 2051 co 2kb à.mà file của anh lên tới 2,61kb.hay là chương trình nạp cho vi điều khiển của em bị lỗi.em dùng hộp nạp đa năng

dung43
25-07-2011, 03:07 PM
đúng file đó rồi. 2,61kb không phải là kích thước thực tế của code khi nạp vào chíp. bạn xem lại mạch nạp hoặc quy trình nạp có sai gì không. code này có 908 byte thôi

phamtienduytbd48
27-07-2011, 11:18 AM
Điều khiển từ xa phát ra các bit 0 va 1. Tuy nhiên nó không thể đưa lên LED hồng ngoại và phát trực tiếp các bit này được (không phát đi xa được). Vì vậy nó cần phải có 1 sóng mang với tần số khoảng 36KHz (giống như trong Radio ấy).

http://i896.photobucket.com/albums/ac170/dung43/tr3.gif

Để làm được bộ phát như trên có 2 cách:
- Tạo ra 1 tần số 36 KHz ổn định làm sóng mang (Dùng NE555)
(36KHz) AND (Bit 0,1) = Output_Signal
- Cách 2 đơn giản hơn. Ra chợ mua 1 cái đk về dùng

Bộ thu là 1 con IC 3 chân(VCC--GND--OUTPUT). Nó có nhiệm vụ nhận tín hiệu hồng ngoại yếu ớt từ đk phát ra, khuyêch đại tín hiệu, tách sóng mang để lọc ra những bít 0 và 1.

http://i896.photobucket.com/albums/ac170/dung43/tr4.jpg

Mỗi 1 lần phát, đk sẽ phát đi 1 chuỗi các bít 0 và 1. IC nhận cũng sẽ nhận đúng số lượng và đúng thứ tự các bit này.

http://i896.photobucket.com/albums/ac170/dung43/tr5.jpg

Sau khi nhân được chuỗi các bit, nhiệm vụ của người lập trình là giải mã chuỗi bit này.
Mỗi loại đktx sẽ tuân theo 1 chuẩn mã khác nhau (RC5 là 1 chuẩn phổ biến).
Trong chuỗi bit đó người ta sẽ phân ra làm 2 phần:
- phần 1 là địa chỉ để phân biệt các thiết bị khác nhau(cùng là hãng SONY nhưng đktx của TV không làm ảnh hưởng đến đầu DVD chẳng hạn)
- phần 2 là phần lệnh (lúc này sẽ chỉ rõ lệnh phát ra là gì khi ta ấn nút trên đk)

http://i896.photobucket.com/albums/ac170/dung43/tr7.jpg

Cuối cùng dựa vào lệnh đã nhận. Ta chỉ việc sử dụng thôi. Ví dụ ấn nút số 1 trên đktx thì sẽ nhận được số 1, ta bật cái quạt. Ấn số 2 ta nhận đc số 2, ta bật cái bóng điện v.v..

http://i896.photobucket.com/albums/ac170/dung43/tr9.jpg

Cho em xin nick yahoo của anh nhé, em cũng đang muốn làm một bộ đk từ xa nhưng không phải là dùng hồng ngoại mà là dùng điều chế FM hoặc AM. Có một số vấn đề em chưa hiểu lắm muốn hỏi anh. Thank anh;$

nguyensan118
28-07-2011, 09:44 AM
bạn có thể qua bên trang web của phuclanshop.com để tham khảo.bên đó cũng có 1 số mạch thu phát FM

sonle_84
29-09-2011, 07:41 PM
chào các bạn ! mình muốn dùng vi xu ly 89c51 để làm remote ti vi được không bạn ? bạn nào biết chỉ mình với ,
thanks !!!

sonle_84
29-09-2011, 09:30 PM
bây giờ mình ko dung remote nữa mình muốn dùng vi điều khiển phát ra xung đúng với mã code cua remote để phát hồng ngoại còn bộ thu thi vẫn dùng vi xử lý bình thường .
bạn nào đã thử làm rồi hay có ý kiến gì đóng góp cho mình với .
thanks !!!!

vipkp3
21-10-2011, 02:07 PM
Em rất thích bài viết này với lại em đang cần làm 1 cái điều khiển từ xa sử dụng 8051 với code assembly anh có thế cho em biết linh kiện cụ thể được không ạ . Em xin cảm ơn. có thể cho em yahoo hoặc gmail của anh để em hỏi thêm thì càng tốt

nghiabk55
06-11-2011, 08:43 PM
Các bác ơi, em học ĐTVT nhưng chưa biết gì cả( mới học đại cương thôi), nhưng bọn em phải làm BTL môn nhập môn ĐTVT, em định làm mạch điều khiển quạt từ xa, các bác có sơ đồ nguyên lí ( càng rõ càng tốt) cho em với, cái sơ đồ trên em chả hiều gì cả. :)

giapthanhjsc
23-11-2011, 04:52 PM
Tiếp về điều khiển từ xa nào.
Hôm nay post tiếp cho anh em mạch và code
Trong mạch sử dụng các linh kiện chính sau:
Vi điều khiển 89C2051
Cách ly quang MOC3020 (3,5k/con)
Triac MAC97A6 đóng mở dòng điện cho các cuộn dây
Còn những linh kiện khác anh em chắc nhìn quen rồi

http://i896.photobucket.com/albums/ac170/dung43/Main.jpg
Bác gửi cho em xin tên các loại linh kiện của mạch này đầy đủ nhé. Mail của em: giapthanhjsc@gmail.com

Nguyenson318
14-01-2012, 01:50 PM
Lâu rồi ko vào diễn đàn thấy luồng này vẫn còn người quan tâm. Mình up lại code và mạch in để các bạn có thể tự làm 1 cái.

http://www.mediafire.com/file/gzknqyjwowm/Quat%20+%20Remote%20Sony.rar

Mạch này Mở bằng chương trình gì vậy các bạn? Thanks

tuanhvt
20-01-2012, 10:13 PM
Cho em hỏi sóng mang được hiểu như nào,nếu lấy điều khiển từ xa không phải của SONY có được không,nếu không thì tại sao ạ?mã hóa thì em thường thấy ở bit 0 và 1 phải không các anh?làm thế nào để biết nó được mã hóa như nào để giải mã,mạch thu phát AM và FM là gì vậy (em không phải dân điện-điện tử ạ).Mong các bạn và các anh giải đáp vì em rất thích điện tử.Thanks!!!

nghia
21-01-2012, 08:02 AM
Sóng mang là tín hiệu được điều chế để mang tin. Nếu bạn làm điều khiển từ xa qua RF (AM hoặc FM) thì sẽ cần biết về sóng mang. Nhưng phương pháp này phức tạp hơn vì phải điều chỉnh mạch phát sóng và thu sóng (như trong radio ấy).
Mỗi họ điều khiển có một bộ mã khác nhau. Do vậy, nếu em không dùng điều khiển SONY thì sẽ phải sửa lại code để nhận được bộ mã tương ứng. Bộ mã này em có thể tìm trên mạng được. Tuy nhiên, thay đổi bộ mã thì sẽ phải lập trình lại khá mệt đấy.

[Z]orro
24-01-2012, 11:24 PM
Mình muốn thiết kế một mạch dành cho một chiếc máy bay trực thăng đktx có 4 quạt xếp theo hình vuông hoặc chữ X với các lệnh sau :
- Tăng/giảm tốc độ 4 quạt --> Nâng/giảm độ cao
- Tăng/giảm tốc độ 2 quạt trước hoặc giảm/tăng tốc độ hai quạt sau --> Đi lùi/tới
- Xoay máy bay (cái này đang băn khoăn có thể sẽ gắn thêm 1 quạt phụ)
Mình mới bước chân vào lĩnh vực này nên cho mình thắc mắc một tí, mong đc giải đáp :
- Theo các bạn nói thì muốn tạo được một mạch thì phải lập trình, vậy lập trình ntn và lập trình để áp dụng vào sản phẩm hay chỉ để mình mô phỏng cách sản phẩm hoạt động ! (Mình nghĩ là chỉ cần lắp các bộ phận đúng chỗ là sẽ hoạt động chứ ?)

vovanhaudt109
26-01-2012, 01:29 PM
ban oi.ban co the cho minh xin mach dieu khien tu xa dc ko.minh moi hoc dt.ko hieu ro lam.cung da lam thu.dung 4017 ,555.ma ko hoat dong dc.ban gui wa mai cho minh nha.thank.vovanhaudt109@gmail.com.thank nhiu

nghia
26-01-2012, 09:38 PM
Nếu bạn muốn không phải lập trình, bạn nên tìm datasheet của dòng PT (hình như PT4001 mình không nhớ chính xác) sẽ dễ làm hơn.
Phương pháp dùng VĐK phù hợp với cac bạn ham thích VĐK nên hơi khó làm theo kiểu "mì ăn liền" hoặc không chuyên điện

phamtienduytbd48
31-01-2012, 09:24 AM
Nhân tiện qua chuyên mục này em muốn hỏi Thầy và các anh có kinh nghiệm về cặp thu phát từ xa PT2262 va PT 2272. Sau một cái tết tìm hiểu về cặp IC này thấy mạch ngày trước mình làm còn thiếu nhiều thứ quá. Nay em muốn hỏi là:" Khi mã hóa dữ liệu để truyền đi cho PT2262 phát ví dụ như các chân địa chỉ dữ liệu là A0 đến A2 (dữ liệu 3bit bằng cách kéo 3 chân đó lên mức 1) khi đó PT2262 sẽ phát một chuỗi dữ liệu 3bit và bit đồng bộ. Nhiệm vụ của PT2272 là giải mã ra đc 3bit dữ liệu này tức là phía PT2272 cũng phải kéo chân A0 đến A2 lên mức 1 và nếu giải mã thành công thì sẽ xuất tín hiệu điều khiển ra chân Dout (17). Điều em băn khoăn ở đây là làm thế nào để thay đổi liên tục các chân ở IC thu PT2272 khi thay đổi chân dữ liệu ở IC phát PT2262.

nghia
31-01-2012, 11:23 AM
Bạn đọc kỹ lại datasheet xem. Mình nhớ là PT có 2 loại đầu vào khác nhau đấy, một loại bắt sườn, một loại phát xung liên tục.
Mình không nhớ có đầu ra trigger không? Nếu không, bạn phải để 1 trigger ở đầu ra để chốt trạng thái.

Nguyenson318
31-01-2012, 08:10 PM
Mạch này Mở bằng chương trình gì vậy các bạn? Thanks

http://www.mediafire.com/?gzknqyjwowm

Mở bằng phần mềm gì cái file này các bác nhỉ???

nghia
01-02-2012, 04:17 PM
http://www.mediafire.com/?gzknqyjwowm

Mở bằng phần mềm gì cái file này các bác nhỉ???

Đây là code của 8051. Bạn mở bằng MC51 là được. Nếu không có, bạn có thể dùng bất kỳ chương trình dịch nào cho 8051 để làm.
Đơn giản nữa, nếu bạn giữ nguyên code thì chỉ cần nạp file .HEX của nó vào chip là được.

nghia
17-02-2012, 08:46 AM
hiện nay mình đã làm thành công bộ thu phát hoàn chỉnh,bộ đôi vi điều khiển 1 phát 1 thu rất hay.ai có nhu cầu mua thì liên hệ với mình qua số máy 0166.495.1093 hoặc mail: thaihe@zing.vn

Bạn làm được cũng tốt, và nên phát huy kết quả của mình (ở mục tin tức hoặc quảng cáo). Tuy nhiên, nếu bạn viết ở mục này thì nên giải thích bạn làm được ntn, nên phát triển ntn... thì tốt hơn.

nghia
17-02-2012, 06:47 PM
1. Trans RF không hoàn toàn khó kiếm, Mình nhớ nhiều loại trans có tần số cắt khoảng vài trăm MHz, tức là chạy được khoảng vài chục Mhz. Vấn đề là hiệu chỉnh RF không dễ nếu không có kinh nghiệm và không có thiết bị. (Chuông cửa không dây của Tàu cũng chạy bằng RF). Hải K42 trước cũng có một lô trans cao tần.
2. Bạn cũng có thể tìm module RF mua sẵn: Có vài người làm, mình nhớ Quế Dương trước cũng thích làm mảng này lắm. Bạn có thể tìm trên mạng. Giá khoảng vài trăm nghìn.

Về 24C04: Code của IC này cũng đơn giản, bạn đọc Datasheet được. Các dòng CPU mới thường hỗ trợ chuẩn I2C tích hợp. Nếu bạn dùng CPU trong mạch thu thì tích hợp cũng dễ thôi. Lúc nào tiện thì mình gửi code mẫu lên sau.

nghia
18-02-2012, 09:14 AM
Bạn vào trang của Quế dương, anh ấy có module RF thu - phát rời. Bạn có thể ghép với các mạch tùy ý. Mấy hôm nay mình hơi bận nên không tìm lại tài liệu được. Nếu không vội thì để tuần sau nhé. Về datasheet: Bạn chỉ cần nhìn dạng sóng là hiểu.

Trandung
09-03-2012, 07:58 PM
Chào bạn. Mình là cũng rất thích chủ đề này.
Và mình cung mong muốn làm một mạch hoàn chỉnh về nó.
Hj. bạn giúp minh hoàn thiện nó với nhé. Thanhs bạn nhiều lắm

nguyensan118
12-04-2012, 08:46 PM
lâu rồi không vô lại diễn đàn thấy các bạn bình luận sôi nổi quá.mạch điều khiển quạt từ xa của anh dũng chạy rất tốt.mình vẫn đang dùng

ETHcom
15-04-2012, 09:54 AM
Chào các bạn mình đang học lập trình và thấy đề tài Điều khiển từ xa quạt của bạn dung43 rất hay thiết thực để ứng dụng điện tử vào cuộc sống, đề tài còn là một ví dụ rất tốt cho những ai mới học lập trình như mình. Cảm ơn bạn dung43 đã chia sẻ.
Mình đã làm theo mạch trên với fimware quat.hex mạch hoạt động rất ổn định.
Nhưng có một vấn đề mong các bạn kiểm tra tháo gỡ giúp.
Với code nguyên bản của bạn dung43 và code mình sửa để thay đổi tính năng thì khi dịch lại bằng keil C, trình dịch báo dịch tốt ( không lỗi không không cảnh báo). Với file hex này dùng với mô phỏng Proteus 7 Professional hoạt động bình thường, nạp cho chíp báo nạp tốt nhưng không chạy trong khi với bộ nạp này nạp file nguyên bản lại chạy bình thường.
Trình dịch Keil uVision2, Keil uVision3
Bộ nạp Willem Eprom 3.5B

nghia
15-04-2012, 03:27 PM
Với code nguyên bản của bạn dung43 và code mình sửa để thay đổi tính năng thì khi dịch lại bằng keil C, trình dịch báo dịch tốt ( không lỗi không không cảnh báo). Với file hex này dùng với mô phỏng Proteus 7 Professional hoạt động bình thường, nạp cho chíp báo nạp tốt nhưng không chạy trong khi với bộ nạp này nạp file nguyên bản lại chạy bình thường.
Trình dịch Keil uVision2, Keil uVision3
Bộ nạp Willem Eprom 3.5B

Rất mừng là các bạn đã có ý định tiếp thu và kế thừa những cái đã có, thay vì "dùng đại". Tuy nhiên, nếu bạn muốn mọi người sửa code, thì bạn phải gửi code lên. Nhớ đánh dấu chỗ sửa đổi để mọi người dễ theo dõi.

nghia
15-04-2012, 04:17 PM
mình chờ các bạn giúp mình giao tiếp 8051 với 24c02 mãi mà không thấy người nào giúp đỡ.chán quá!!!

Có code cũ 24C viết cho 89C51. Hy vọng giúp được bạn. Hình như viết cho dòng 24C64. Với các dòng khác thì bố trí địa chỉ trên thanh ghi địa chỉ có khác một chút.

atmel24c.h:

#if !defined( __ATMEL24C_H )
#define __ATMEL24C_H

void WriteEEPROM(unsigned char addhi, unsigned char addlo, unsigned char rwdata);
unsigned char ReadEEPROM(unsigned char addhi, unsigned char addlo);

void WriteWEEPROM(unsigned add, unsigned rwdata);
unsigned ReadWEEPROM(unsigned add);
#endif


atmel24c.c

#include <reg51.h>
#include "iodefine.h"
#include "atmel24c.h"
#define wait {unsigned char i;for (i=0;i<20;i++);}
void Start();
void Stop();
void Clock();
bit ACK();
void Poll();
void SendB(unsigned char tdata);
unsigned char ReadB();
// ****************************
void WriteWEEPROM(unsigned add, unsigned rwdata)
{
WriteEEPROM(add >>8, add & 0xFF, rwdata & 0xFF);
WriteEEPROM(add >>8, add & 0xFF, rwdata >> 8);
}
unsigned ReadWEEPROM(unsigned add)
{
return (ReadEEPROM(add >> 8 , add & 0xFF) || (ReadEEPROM(add >> 8, add & 0xFF) <<8));
}

void WriteEEPROM(unsigned char addhi, unsigned char addlo, unsigned char rwdata)
{
Start();
addhi <<= 1;
addhi |=0xa0;
SendB(addhi);
ACK();
SendB(addlo);
ACK();
SendB(rwdata);
ACK();
Stop();
Poll();
}
void Poll()
{
bit writeOK;
writeOK=0;
while (!writeOK)
{
Start();
SendB(0x0a0);
writeOK = ACK();
}
Stop();
}

// ****************************
unsigned char ReadEEPROM(unsigned char addhi, unsigned char addlo)
{ unsigned char b;
// Dummy write
Start();
addhi <<=1;
addhi |=0x0a0;

SendB(addhi);
ACK();
SendB(addlo);
ACK();

// Read
Start();
addhi |= 1;
SendB(addhi);
ACK();
b=ReadB();
// No Ack
SDA=1;
Clock();
Stop();
return b;
}
// *****************************
void Start()
{
SDA=1;
SCL=1;
SDA=0;
wait;
SCL=0;
}
// ******************************
void Stop()
{ SDA=0;
SCL=1;
wait;
SDA=1;
}
// *****************************
void Clock()
{
SCL=1;
wait;
SCL=0;
}
// ******************************
bit ACK()
{
bit c;
SDA=1;
c = SDA;
Clock();
return c;
}

// ******************************
void SendB(unsigned char tdata)
{
unsigned char i;
for (i=0;i<=7;i++)
{
if (tdata & (0x80 >> i))
SDA =1;
else
SDA = 0;
Clock();
}
}
// ******************************
unsigned char ReadB()
{
unsigned char i;
unsigned char tdata=0;
for (i=0;i<=7;i++)
{
if (SDA)
tdata |= (0x80 >> i);
Clock();
}
return tdata;
}

// ******************************

IODEFINE.H


#define AD1Lo AddrMap[0xFB00]
#define AD1Hi AddrMap[0xF700]

// For IO module
#define ECD1 P12
#define ECD2 P13
#define DIn1 P14
// For Output module - in weight.c file

#define Out1 P15
#define Out2 P16
#define Out3 P17

// for EEPROM module
#define SDA P10
#define SCL P11

// system management
#define VCC INT1
#define CTS T0
#define RTS T1

#endif

nghia
16-04-2012, 01:20 AM
Mạch nguyên lý rất đơn giản: Chỉ có 2 chân SDA và SCL được nối với CPU, các chân còn lại nối theo data sheet:
- Chân nguồn & đất.
- Chân WP
- Chân địa chỉ.

linh
16-04-2012, 09:09 AM
code tuy cũ nhưng bạn yên tâm chắc chắc chạy được ! mình là nạn nhân đã thử nghiệm rồi.

ETHcom
16-04-2012, 07:08 PM
Rất mừng là các bạn đã có ý định tiếp thu và kế thừa những cái đã có, thay vì "dùng đại". Tuy nhiên, nếu bạn muốn mọi người sửa code, thì bạn phải gửi code lên. Nhớ đánh dấu chỗ sửa đổi để mọi người dễ theo dõi.

Mình nghĩ là không phải do code lỗi vì như viết từ bài trước Với code nguyên bản (chưa chỉnh sửa) của dung43 khi dịch lại vẫn bị hiện tượng: dùng với mô phỏng tốt nhưng nạp chíp thật thì không chạy. Khả năng do trình dịch có vấn đề gì đó.

nghia
16-04-2012, 09:53 PM
code tuy cũ nhưng bạn yên tâm chắc chắc chạy được ! mình là nạn nhân đã thử nghiệm rồi.

Thử rồi và ... nhăn răng!


Mình nghĩ là không phải do code lỗi vì như viết từ bài trước Với code nguyên bản (chưa chỉnh sửa) của dung43 khi dịch lại vẫn bị hiện tượng: dùng với mô phỏng tốt nhưng nạp chíp thật thì không chạy. Khả năng do trình dịch có vấn đề gì đó.

Khi bạn nạp file hex nguyên bản thì chạy được -> Mạch phần cứng tốt. Bạn dịch và so sánh 2 file hex kết quả thế nào? Chế độ mô phỏng đôi khi không thể hiện đúng thực tế về tính thời gian thực của đối tượng.
Bạn thử chi tiết hơn từng thao tác nhận xung, điều khiển đầu ra còn hoạt động không? Chắc bạn phải nhờ tác giả gỡ rối cùng rồi.

ETHcom
17-04-2012, 04:52 PM
Eureka ...mò mẫm mấy hôm thì cũng đã tìm ra lỗi. Anh chàng Keil C này hay thật đó chưa đăng ký vẫn làm việc, vẫn dich, file dịch vẫn cho mô phỏng mà không báo lỗi, cũng chẳng báo để đăng ký. Vừa add lic cho Keil C 3, file dịch xong nạp vào chíp chạy ngon lành, âu cũng là kinh nghiệm cho người mới. Cài xong keil C nhớ đăng ký vì Keil không báo đâu.

kulidtvt
19-04-2012, 12:28 AM
anh nào làm được mạch của anh DUNG43 rồi cho e hỏi với .>>>>>>.
mong nhận được sự giúp đỡ từ các anh
gmail của em là: letantrieudtvt@gmail.com

ETHcom
20-04-2012, 05:39 AM
anh nào làm được mạch của anh DUNG43 rồi cho e hỏi với .>>>>>>.
mong nhận được sự giúp đỡ từ các anh
gmail của em là: letantrieudtvt@gmail.com

Mình nghĩ bạn nên đặt luôn câu hỏi, để mọi người cùng tìm hiểu và giải đáp, có thể thắc mắc của bạn cũng là thắc mắc của người khác , nếu đọc từ trang đầu thấy rất nhiều người làm thành công rồi mà.

kulidtvt
21-04-2012, 05:23 PM
e không biết trên cái mạch lắp đặt chỗ (chỗ khoanh tròn màu đỏ ).giúp em với ETHcom
http://http://s887.photobucket.com/albums/ac80/le_thu_333/linh%20tinh/?action=view&current=REMOTEDUNG.jpg

nghia
21-04-2012, 07:56 PM
Đó là chuyển mạch DIP Switch: 4 cái công tắc gạt được gộp chung vào một vỏ. Bạn có thể mua ở chợ Trời, nó hình vuông màu đỏ và có 4 gạt chuyển mạch màu trắng. nếu không có, bạn có thể nối chập bằng dây nhảy hoặc để hở tùy theo yêu cầu.

kulidtvt
21-04-2012, 08:22 PM
cảm ơn anh nhiều nha .e sẽ làm thử có gì mong a giúp đỡ nhiều

DUCTHUANKTCN
24-04-2012, 10:12 AM
dai ca oi!dai ca cho em ten linh kien voi thong so cua cac linh kien mach nay dj.em dang phai lam do an nhung ve phan nay ma bi wa.khong bit lam the nao,tai lan dau lam nen chua bit lam,dai ca cho em nha.hhj.thanks nhiu

lduc
30-04-2012, 10:55 AM
Mình muốn một bộ mạch hoàn chỉnh, bạn có thể mail cho mình sơ đồ lắp ráp và linh kiện được không, nếu có mạch in thì rát cảm ơn. Mail: minhnganngan@yahoo.com

kinglord
02-05-2012, 09:18 PM
Hiện nay mình có sản xuất các mạch điều khiển từ xa để điều khiển các thiết bị trong gia đình đặc biệt là mạch điều khiển quạt bàn và đèn điện.Có các loại mạch từ 1 kênh-> 15 kênh độc lập tương ứng có thể điều khiển được 1->15 thiết bị trong gia đình nhà bạn.Các mạch thông dụng là mạch từ 1->5 kênh.
*Thông tin mặt hàng
-Mạch 1 kênh: trị giá 150k
-Mạch 2->3 kênh: 250k
-Mạch 4->5 kênh: 300k
-Mạch lớn hơn 5 kênh: 500k->1 triệu
*Đối với các mạch dùng sóng RF sẽ đắt gấp đôi so với mạch hồng ngoại do tính chất xuyên tường và vật cản của mạch
*Giới thiệu sản phẩm
-Mạch được kiểm nghiệm thực tế đã khắc phụ được 1 số nhược điểm thường gặp như bị nhiễu,bất ổn định khi làm việc,...
-Sử dụng trực tiếp nguồn 220V để nuôi mạch điều khiển,tiết kiệm được chi phí mua biến áp
-Tiêu thụ năng luợng không đáng kể,có thể để mạch hoạt động 24/24
-Mạch cách ly quang không dùng rơle nên không có tiếng kêu lách tách của rơle
-Mạch thiết kế đơn giản dễ hiểu,dễ sử dụng
-Ứng dụng thực tế cao
*Mọi ý kiến phản hồi của khách hàng có thể gửi qua email: thaihe@zing.vn để được giải đáp

ra Nhật Tảo mua 1 bộ tắt mở bằng RF 12 kênh có 300k, ở đâu bày đặt nổ trên 5 kênh 500k còn la cái gì RF mắt hơn IR. Vào web kĩ thuật mà đi khè ai thế chú. Đố có dám vào dientuvietnam.net mà rao cho nó chém bấy xác

quangtien2992
09-05-2012, 06:03 PM
a ak! co the cho e xin hinh anh cu the bo thu phat cung nhu cac linh kien can thiet de lam mot dktx hoan chinh khong ak.... e mun lam mot cai dktx nhung khong co kien thuc ve dien tu. rat mong a co the giup do.
cam on a rat nhiu!

lduc
15-05-2012, 07:17 AM
Bạn sv nào muốn làm 1 bộ đktx hoàn chỉnh thì cứ hỏi nhé, mình sẽ giúp nhiệt tình. (Nhớ đăng ký làm thành viên trước, và đừng quên đóng góp những hiểu biết cho forum thêm sôi động)
Sau vụ này sẽ giúp các bạn sv mới làm quen với lập trình, nâng cao kiến thức về lập trình ngắt, sử dụng các timer, ưu tiên ngắt....

Ban co the cho minh so do mach in va linh kien khong. Thanks

nghia
04-06-2012, 12:28 PM
đây là 1 bước tiến vượt bậc trong công nghệ xử lý nhiễu.Quá trình giải mã tiên tiến xử lý tới từng us tăng cường khả năng định vị bit

ở đây lạnh nhỉ?

tkdangnhap
09-06-2012, 11:42 AM
anh dũng ơi có on nữa ko vậy .. em cân sơ đồ mạch nguyên lý để làm 1 cái có dc hk vậy ... mail em nek` sonvuong51ddt@gmail.com

dientu4u.com
18-06-2012, 07:29 AM
Mình sưu tầm được cái đồ án về đktx bằng hồng ngoại. Các bạn có thể tham khảo thêm
http://www.mediafire.com/?itv9gw8y9uurnfb

DT2K50
18-06-2012, 10:40 PM
Anh Dung43 có thể cho em gửi sơ đồ nguyên lí + code ( Trình biên dịch là gì ạ) vào mail em được không?Em rất muốn tìm hiểu về cái này
Yahoo mail: vuluu137@yahoo.com
Cảm ơn anh nhiều !

zealotnt
17-10-2012, 02:39 PM
e có đọc bài của a về bộ đktx. điều e thắc mắc là khi vđk đọc tín hiệu từ IR receiver, làm sao để vđk có thể đồng bộ bit với nó ( lấy được đúng giá trị IR receiver gửi cho vđk nếu tốc độ gửi receiver và tốc độ thu của vđk khác nhau? )

kookyo
18-10-2012, 06:34 AM
ĐẠi ca dũng cho em hỏi . . e có thể thay diac bằng tran Tip22 được k??nếu e muốn làm riêng 1 bộ đk tự chế thì e phải dùng 2 chip 89 đúng k?

huy_11cdt2
19-10-2012, 04:52 PM
vay mach dung cap vdk pt2248 va pt2249 thi code cua no nhu the nao vay?

nghia
21-10-2012, 12:09 AM
Các bác vào đây xem mạch điều khiển từ xa này.Ngon và full chưa từng thấy,đặt số lượng sản phẩm và đóng gói bằng remote sony,code chống nhiễu ghê ghớm.Các bạn vào đây down về xem có đủ từ a->z.Của dũng 43 còn lâu mà được như thế này,cái của dũng 43 nhiễu bét.

Trước thì phải đi học thiên hạ, đến khi tập tễnh được vài võ thì quảng cáo nổ om sòm. Thử hỏi bạn dùng kỹ thuật gì chống nhiễu trước khi đưa tín hiệu về đến VĐK. Một khi đã đến VĐK rồi thì chỉ là các giải pháp sửa xung đầu vào thôi, chống được bao nhiêu nhiễu?

lyhoan62
26-10-2012, 05:48 PM
bạn dung43 ơi,minh đang cần mạch điều khiển đèn (quạt ),bạn có thể gửi cho mình sơ đồ nguyên lý dk ko,cho mình hỏi là mạch điều khiển đèn (quạt) của mình có cách nào ko cần viết code mà vẫn chạy dk ko,mình cảm ơn bạn nhiêu,bạn gửi cho minh qua email lyjhoan62@gmail.com nhe

lyhoan62
26-10-2012, 06:18 PM
bạn dung43 ơi,bạn gưi cho mình vào gmail lyhoan62@gmail.com nhe,mình gửi nhầm mail

lê thắng thư
28-10-2012, 12:18 AM
bạn ơi,mạch in vs cái code làm cái này như thế nào vậy?

tunup
14-11-2012, 11:52 PM
bạn ơi, đề tài của mình dùng 8051 điều khiển độ sáng bóng đèn xoay chiều sử dụng pwm. ý tưởng của mình là tín hiệu vào từ led thu (hoặc quang trở), qua adc rồi vào vđk xử lí xung.. xung ra qua 1 con cách ly quang rồi đến phần đèn gồm nguồn 220v, 1 con mosfet, 1 bóng xoay chiều.. tuy nhiên mình ko mô phỏng trên proteus và viết code ra sao.. giúp đỡ chút nào..

tunup
14-11-2012, 11:58 PM
bạn ơi, đề tài dùng at89c51 điều chỉnh độ sáng bóng đèn 220v dùng pwm. ý tưởng của mình là 1 quang trở (or led thu), tín hiệu đưa vào adc rồi đưa vào 8051 xử lý. từ đây qua con cách ly quang pc817 rồi đến phần đèn (gồm 1 nguồn 220v, 1 mosfet hoặc con gì để điều chỉnh điện áp xoay chiều, 1 bóng 220v). nhưng sang phần mô phỏng bằng proteus và phần code thì mình bị nghẹn vì chưa làm bgiờ.. bạn giúp mình tí nhé.

tunup
15-11-2012, 12:06 AM
Chào bạn, mình có đề tài sử dụng 8051 điều khiển độ sáng bóng đèn xoay chiều dùng pwm. tức là kiểu như trời sáng thì đèn tắt, trời tối dần thì đèn sáng dần. ý tưởng của mình là dùg quang trở (hoặc led thu) qua ADC rồi vào 8051.. từ đây qua con cách ly quang pc817 rồi qua bộ đèn (gồm nguồn 220v, mosfet hoặc con gì điều khiển dòng xoay chiều, bóng 220v). ý tưởng là thế nhưng mình gặp khó khi mô phỏng trên proteus và phần code thì mình mù tịt.. nhờ bạn giúp chút nhé.. thanks. hy vọng bạn nhận được và rep sớm. bạn có thể mail cho mình lun mr.tunup@gmail.com

tunup
15-11-2012, 12:10 AM
bạn mà có thì send mình luôn với nhé mr.tunup@gmail.com

pqconghau
14-05-2013, 09:56 AM
Anh Dung43 co the cho e xin ban mo phong proteus cua mach nay kg, thanks anh nhiu

nguyendung886249
18-05-2013, 10:49 PM
Dung43 oi, có thể hướng dẫn mình viết code cho cái DKTX dùng con ic ba5104 được không?Nhà mình đang đang dùng để điều khiển cái quạt nước,không bít nó dùng con gì mà số thì bị xóa mất rùi,làm ơn giúp mình với

vodanhhehe
05-08-2013, 12:38 AM
cho m hỏi chút.trên đk tv sony có nhiều nút như vậy.thì bộ thu nó nhận dạng ntn.
chẳng hạn m muốn đk tắt mở 1 bóng đèn thì phải làm sao.

jeamy_bk
04-09-2013, 11:28 AM
em chào các anh chị ah.. anh dung43 ơi, anh có thể gửi cho em 1 bản hoàn chỉnh code, mạch... được không ạ. hì. em muốn tìm hiểu cái này lâu quá rồi mà không biết bắt đầu từ đâu.
em cảm ơn anh ạ. :x

jeamy_bk
04-09-2013, 12:00 PM
em chào các anh chị ah.. anh dung43 ơi, anh có thể gửi cho em 1 bản hoàn chỉnh code, mạch... được không ạ. hì. em muốn tìm hiểu cái này lâu quá rồi mà không biết bắt đầu từ đâu.
em cảm ơn anh ạ. :x
mail của em là nguyenthidiu.bkhn@gmail.com

tivi hoang
09-09-2013, 01:17 AM
Chào a. Bọn e đang học môn điện tử. ý định muốn điều khiển đóng/mở cửa khóa bằng đktx. a có thể giúp e mô phỏng sơ về mạch bao gồm những linh kiện và phần mềm nào đk ko?. Cảm ơn a nhiều nhé....:D.

khuongdt13tb
03-10-2013, 10:34 PM
bạn cho mình sơ đồ nguyên lí va lưu đồ giải thuât nhe

Vanty
05-12-2013, 07:15 AM
Nửa đêm đang ngủ ngon phải bò dậy tắt quạt vì lạnh. Bật quạt mãi mà không chạy do nút bấm bị kẹt. Sáng dậy thấy điện vẫn sáng do tối qua ngủ quên không tắt điện.... Đó là những tình huống khó chịu mà ta gặp phải trong cuộc sống hàng ngày.
Tất cả các lý do trên khiến mình phải bỏ ra 2 tuần để chế ra 1 bộ điều khiển từ xa. Sử dụng vi điều khiển 89C2051 cộng với cái điều khiển TV SONY vứt đi là đã có 1 bộ điều khiển từ xa như ý. Chạy 2 năm nay mà chưa có hỏng hóc gì.
Ta đi sâu vào điều khiển cái quạt bàn.
Chức năng của quạt bàn ta thường thấy gồm có:
- On/Off
- Hẹn giờ (30', 1h, 2h, 4h)
- Đổi tốc độ (Số 1, số 2, số 3)
- Gió liu riu (Nature Wind)

Cách up mạch và code ở đâu nhỉ?
Ban co the giup ming gui cos va file mach cho minh lap 1cai su dung duoc khong vi minh thay no rat thiet thuc trong cuoc song them mot phan nua minh hay so ma nen rat quan tam den van de nay . Thank dia chi mail songlam72@gmail.com phone 0905181725

Vanty
05-12-2013, 12:14 PM
Chào các bạn mình đang học lập trình và thấy đề tài Điều khiển từ xa quạt của bạn dung43 rất hay thiết thực để ứng dụng điện tử vào cuộc sống, đề tài còn là một ví dụ rất tốt cho những ai mới học lập trình như mình. Cảm ơn bạn dung43 đã chia sẻ.
Mình đã làm theo mạch trên với fimware quat.hex mạch hoạt động rất ổn định.
Nhưng có một vấn đề mong các bạn kiểm tra tháo gỡ giúp.
Với code nguyên bản của bạn dung43 và code mình sửa để thay đổi tính năng thì khi dịch lại bằng keil C, trình dịch báo dịch tốt ( không lỗi không không cảnh báo). Với file hex này dùng với mô phỏng Proteus 7 Professional hoạt động bình thường, nạp cho chíp báo nạp tốt nhưng không chạy trong khi với bộ nạp này nạp file nguyên bản lại chạy bình thường.
Trình dịch Keil uVision2, Keil uVision3
Bộ nạp Willem Eprom 3.5B

Ban da lam thanh cong roi lam on gui file va cos chung trinh giup minh duoc khong, di chi mail cua minh song lam 72@gmail.com dt0905181725. Cam on ban rat nhieu

vuongtonman
14-01-2014, 06:01 PM
xin chào mọi người.mình là thành viên mới,mình đang làm đồ án về đề tài thiết kế remote đa năng,mà đề tài này mình hơi gà nên muốn nhờ a chị e trên diễn đàn giúp đỡ.Rất mong mọi người sẽ hỗ trợ cho mình,cảm ơn mọi người trước nha