Mạch điều khiển thiết bị từ xa qua điện thoại

Dưới đây mình xin hướng dẫn các bạn thiết kế bộ điều khiển từ xa 7 thiết bị điện từ xa bằng điện thoại di động sử dụng công nghệ DTMF

Đầu tiên mình sẽ giới thiệu đặc điểm cơ bản của bộ điều khiển này:
+ Điều khiển được 7 thiết bị hoặc nhiều hơn tùy thiết kế.
+ Có thể điều khiển mọi lúc mọi nơi trên thế giới chỉ cần có sóng điện thoại


Hoàn thiện sản phẩm
Hoàn thiện sản phẩm

Hoạt động quá ổn
Hoạt động quá ổn


Nguyên lý của toàn bộ mạch là mã hóa âm thanh (DTMF)

DTMF là tổ hợp âm thanh có 2 tần số khác nhau và nó được biễu diễn bởi 1 phương trình sau:

f(t) = A0sin(2*П*fa*t) + B0sin(2*П*fb*t)

Hình sau biểu diễn sự tương quan giữa các phím và tần số :



Phím số tương đương giải tần số
Phím số tương đương giải tần số

Như vậy theo hình trên khi ta nhấn bất kì 1 phím số nào trên điện thoại thì sẽ tạo ra 1 âm thanh DTMF và âm thanh này khác nhau ơ các phím số khác nhau

Vấn đề chính là ở anh DTMF này , các phím số khác nhau sẽ có DTMF khác nhau , bây giờ ta chỉ việc giải mã anh DTMF này là có thể điều khiển được , về phần giải mã DTMF mình dùng IC chuyên dụng MT8870 ( có thể giải mã DTMF trực tiếp bằng vi xử lí , nhưng hơi phức tạp nên mình không đề cập tới )

Nguyên lí hoạt động của bộ điều khiển này như sau :


Khi ta gọi ( bên A) cho cái máy điện thoại ( bên B) ở board mạch trung tâm ( phải cài đặt chế độ tự động trả lời cho cái điện thoại này ) sau đó 2 máy điện thoại sẽ kết nối với nhau và đi và chế độ thoại , bây giờ bên A nhấn 1 phím bất kì thì đầu ra loa bên B sẽ nghe được 1 âm thanh DTMF , âm thanh này được đưa vào IC MT8870D để giả mã ,đầu ra của IC giã mã này là một dữ liệu dạng BCD 4 bits , dữ liệu này được đưa vào chip vi xử lí PIC16F84A để xử lí và điều khiển 7 ROLE đóng cắt nguồn điện cấp cho thiết bị.

Nếu ta nhấn phím số 1 trên điện thoại thì ROLE 1 sẽ đóng, LED báo hiệu tương ứng sẽ sáng , khi ta nhấn lại lần nữa thì thì ROLE sẽ cắt và LED báo hiêu sẽ tắt theo ( tương tự cho các số còn lại )

Sơ đồ mạch của bộ điều khiển :


Sơ đồ nguyên lý mạch điều khiển
Sơ đồ nguyên lý mạch điều khiển


Ghi chú : do mình sử dụng điện áp 12V cấp vào relay để bật sáng LED khi relay được bật nên khi các bạn có lắp các đèn LED vào thì nhớ lắp thêm 1 điện trở có giá trị là 1K nối tiếp với chân của LED rồi lắp vào mạch ( trở có mục đích là hạn dòng cho LED ) .. nếu không lắp thêm con điện trở này thì LED sẽ cháy ngay khi đóng điện cho relay ...chỉ lắp điện trở vào 7 LED của phần relay ( từ LED2 đến LED8 )......


sơ đồ mạch in
Mạch in 2 mặt
Mạch in 2 mặt

Hình sau miêu tả sự tương quan của phím ấn và vị trí ROLE của bộ thu:


Phim ấn tương đương với rơ le
Phim ấn tương đương với rơ le
CODE lập trình của nó như sau:


#include "16F84A.h"
#FUSES NOWDT
#FUSES XT
#FUSES NOPUT
#FUSES PROTECT
#use delay(clock=3570000)
char num=0,val=0;
char read_BCD()
{
if(input(PIN_A0))val |= 0x01;
if(input(PIN_A1))val |= 0x02;
if(input(PIN_A2))val |= 0x04;
if(input(PIN_A3))val |= 0x08;
return(val);
}

void main()
{
int1 m=1;
set_tris_a(0xFF);
set_tris_b(0b00000001);
output_b(0x00);
while(true)
{
if((input(PIN_B0))&&(m==1)){num=read_BCD();val=0;m=0;}
if((input(PIN_B0))==0)m=1;
switch(num)
{
case 0:break;
case 1:
{
output_toggle(PIN_B1);
num=0;
break;
}
case 2:
{
output_toggle(PIN_B2);
num=0;
break;
}
case 3:
{
output_toggle(PIN_B3);
num=0;
break;
}
case 4:
{
output_toggle(PIN_B4);
num=0;
break;
}
case 5:
{
output_toggle(PIN_B5);
num=0;
break;
}
case 6:
{
output_toggle(PIN_B6);
num=0;
break;
}
case 7:
{
output_toggle(PIN_B7);
num=0;
break;
}
}
}
}

Code hex nạp vào chip :

:1000000000308A001B28000083160514831205188F
:1000100011148316851483128518911483160515FF
:1000200083120519111583168515831285199115EB
:1000300011088D00312884011F3083059001910142
:100040001214FF30650001306600831686018312AA
:100050008601831606148312061C3528121C3528C7
:1000600004280D08900091011210831606148312C3
:10007000061C12141008F83E03187228083E742853
:100080007228831686100230831286069001722829
:100090008316061104308312860690017228831697
:1000A0008611083083128606900172288316061284
:1000B0001030831286069001722883168612203033
:1000C000831286069001722883160613403083122D
:1000D0008606900172288316861380308312860666
:1000E00090017228292863000A108A100A118207D9
:1000F0004028412848284F2856285D2864286B2826
:02400E000900A7
:00000001FF
;PIC16F84A
;CRC=E619 CREATED="24-Oct-13 14:49"


Vì đây là bản miễn phí nên không có chức năng bảo mật , không thể biết các trạng thái của thiết bị.......

File mạch in tại đây :
download 


ADMIN

Chuyên tư vấn-thiết kế-thi công mạch điện tử theo yêu cầu - Chuyên đưa các mô hình bán tự động về tự động hoàn toànTHÀNH HƯNG
Tư vấn Thiết kế mạch / Viết code Vi điều khiển / Thiết kế mạch in
Dự án đang thực hiện Khu biệt thự cao cấp VinHome Riverside
Tư vấn miễn phí: 0979.330.129 - Mr.Cường