دوست عزیز اگه میشه قیمتش رو هم بگین
نمایش نسخه قابل چاپ
دوست عزیز اگه میشه قیمتش رو هم بگین
ممنون از راهنماییتوننقل قول:
طبق دستورات شما عمل کردم . هر کلیدی روی ریموت فشار میدادم یک کد ثابت نشان میداد البته روی ال سی دی .یعنی اگر کلید آ رو میزدم دائما یک کد دریافت میشد و موقعی که دکمه ب رو میزم کد عوض میشد. ضمنا معلوم نیست این کدی که میکرو حلاجی کرده همون کدی باشه که ریموت فرستاده ولی چون میکرو کد رو بصورت کاملا درست هر دفعه نشان میده پس میشه روش حساب کرد.
راستی موقعی که ریموت رو کمی دورتر میکردم همش صفر میشد و موقعی که ولتاژ رو به 4 یا 5 ولت میرسوندم گیرنده همش از خودش کد بیرون میداد این قضیه میتونه به قدرتش ربط داشته باشه یعنی داره فرستنده های دورتر رو میگیره؟
به زبان بیسیک برنامه و توضیحاتش را میزارم قابل فهم تر هست » حتما از کریستال 8 مگ برای avr استفاده کنید . برای pic از کریستال 16مگ
در این پروژه یک گیرنده ریموت 3 رله میسازیم
برای اینکار نیاز به یکعدد ریموت کنترل بتا که ask ]ستند و در فرکانس 433 کار میکنند
یک عدد ماژول گیرنده ask433 یا pcr433
روش کلی به این صورت هست که ماژول گیرنده کدهای ارسالی ریموت را دریافت میکنه و تبدیل به پالس میکنه و ما اون پالسها را پردازش میکنیم
همانطور که دوستان در تاپیکهای avr اشاره کردن اکثر ریموتهای لرن از آی سی EV1527 استفاده میکنند که این آی سی 24 بیت کد ارسال میکنه
که 20 کد مربوط به سریال ریموت کنترل هست و 4 کد آخر مربوط به کلید ریموت کنترل
این 24 بیت که مجموعه ایی از صفر و یک هست به صورت خاصی ارسال میشود :
یکها پالسی به طول مثلا 3 ms
صفرها پالسی به طول 1 ms
یعنی طول پالسهای یک 3 برابر صفر هست
وقتی کلیدی را فشار میدهیم اول پالس با سطح یک به مدت 3 ms سپس پالسی به طول 31 برابر صفرها اما با سطح صفر میفرسته یعنی 31ms بعدش کدهای صفر و یک را ارسال میکنه پس اول PREMBLE بعد هم 24 کد
پس روش کار به این صورت هست :
اول منتظر میمونه یک بشه بعدش تا صفر شد طول پالس را اندازه میگیریم هر وقت پالسی اومد که طولش 31ms بود یعنی ریموت داره کد ارسال میکنه بعد از اون تا 24 پالس را ذخیره میکنیم که مربوط به کدهای ریموت هستند .
چون باید اندازه گیری دقیق باشه پایه دیتای گیرنده را به تایمر 1 میکرو میدیم توسط اون اندازه میگیریم .
با کریستال 16 MEG و استفاده از تایمر یک این مقادیر به دست میاد :
PRIMBLE : اگر بین 4500 تا 6500 بود پس میفهمیم که کلید زده شده
یکها : بین 300 تا 800
صفرها : بین 50 تا 300
هر چی هم خارج این مقادیر بود یعنی خطا هست از برنامه خارج میشوید .
حالا میریم سراغ برنامه نویسی :
راه اندازی تایمر 1 :
t1con.0=0: tmr1h=0 :tmr1l=0
t1con=%00110000
حلا در قسمت اصلی برنامه منتظر میمونیم که پایه متصل به ماژول گیرنده هر وقت 1 شد ما عرض پالس را با تایمر 1 اندازه بگیریم اگر مقدار مورد نظر بود عمل کنه فرض کنیم اسم پورتی که دیتای گیرنده وصل هست RF باشه :
if rf=1 then
t1con=%00110000: tmr1h=0 :tmr1l=0 :t1con=%00110001 ;shoro
while rf=1
v2.byte1=tmr1h : v2.byte0=tmr1l
if v2>1000 then goto badesh1
wend
:badesh1
برای اینکه قابل فهم باشه توضیح میدم بعدش ادامه برنامه :
دستور IF منتظر میمونه که پالس بیاد سپس تایمر 1 را روشن و مقدارش را صفر میکنه سپس وارد حلقه میشه و تا وقتی یک هست در حلقه میمونه تایمر 1 هم که در حال اندازهگیری هست که در V ذخیره میشه
اما اگر بر اثر نویز یا هر چیز دیگه این پایه مدت زیادی 1 بمونه داخل این حلقه گرفتار میشه برای همین داخل حلقه مقدار V را اندازه میگیریم اگر از مقدار مورد نظر ما بیشتر شد خارج بشه
حالا ادامه برنامه :
t1con=%00110000: tmr1h=0 :tmr1l=0 :t1con=%00110001 ;shoro
while rf=0
s2.byte1=tmr1h : s2.byte0=tmr1l
if s2>6500 then goto badesh2
wend
badesh2:
t1con=%00110000 ;payan
s2.byte1=tmr1h : s2.byte0=tmr1l
if s2>4500 then
if s2<6500 then
goto daryaft_kod
endif
endif
goto main
دوباره تایمر 1 صفر میشه و روشن میشه و مدت زمانی که پایه صفر هست را میشماره داخل حلقه اگر از مقدار مورد نظر بیشتر شد برای گرفتار نشدن خارج میشه اگر هم مقدار مورد نظر درست
بود که خود به خد از حلقه خارج میشه چون پالس به صفر و یک تغییر میکنه
بعد هم تایمر1 را خاموش میکنیم گناه داره [Dear Guest/Member you can't see link before replyclick here to register]
بعد هم مقادیر تایمر را در s2 ذخیره میکنیم
حالا اگر این s2 بین مقادیر 4500 تا 6500 بود پش پیش کد ارسال شده باید بلافاصله 24 تا بعدی را بخونیم
اما زیر برنامه دریافت کدها :
اول 34 بیت را دریافت میکنیم که همشون سطح 1 دارند با عرضهای مختلف اونها که 3ms (بین 300 تا 800)هستند یک هستند و اونها که 1 ms (بین 100 تا 300)هستند صفر هستند و هر چی غیر از اینها باشه غلطه خارج میشه
بعدش هم برای اینکه حافظه الکی پر نشه اونها که بین 300 تا 800 هستند را جاش 1 ذخیره میکنیم اونها هم که بین 100 تا 300 هستند جاش صفر میزاریم
حالا بریم توضیح زیر برنامه :
:daryaft_kod
j=0
while j<code
if rf=1 then
t1con=%00110000: tmr1h=0 :tmr1l=0 :t1con=%00110001
while rf=1
s2.byte1=tmr1h : s2.byte0=tmr1l
if s2>850 then goto main
wend
:
t1con=%00110000
j=j+1
s2.byte1=tmr1h : s2.byte0=tmr1l
s[j]=s2
tmr1h=0 :tmr1l=0 :t1con=%00110001
endif
wend
tmr1h=0 :tmr1l=0 :t1con=%00110000
for i=1 to code
if s>=300 and s<=800 then
s=1
else
if s>=100 and s<300 then
s=0
else
tmr1h=0 :tmr1l=0 :t1con=%00110000
j=0
goto main
endif
endif
next i
توسط حلقه while j تا 24 کد را میخونه و ذخیره میکنه سپس خارج میشه
منتظر میمونه 1 بشه تایمر روشن وارد حلقه میشه اگر بیشتر از مقدار مورد نظر بود برای اینکه توی حلقه گیر نکنه خارج میشه اگر مجاز بود که از حلق میاد بیرون و مقدار تایمر در یک آرایه ذخیره میشه
به همین ترتیب هر 24 تا در یک آرایه 24 تائی ذخیره میشوند
سپس توسط حلقه for اونها که بین 100 تا 300 بودن بهشون 0 مقدار میدیم و اونها که بین 300 تا 800 بودن بهشون 1 میدیم
هر چی هم خارج این مقادیر باشه یعنی اشتباه از برنامه خارج میشه
خوب حالا ما کدها را داریم باید 20 تا بیت اول را ذخیره کنیم و 4 تا بیت آخر مشخص میکنه که کدوم کلید زده شده
در ادامه برنامه کامل و فایل pcb را میزارم .
میتونید توسط میکرو یک رشته سریال به فرستنده بدین و در گیرنده با دستور سریال رشته را دریافت کنید اینجوری میتونید بینهایت ریموت تعریف کنید ، که بهتره از ماژول ارسال دیتا استفاده کنید اما چون یک رشته کوتاه هست و سرعت دیتا مهم نیست همین ماژولها هم جواب میده
ممنون از توضیحاتتون
خیلی کامل بود
سلام :
دوست گرامی من یک چیزی مشابه همین مدار میخواهم ولی با 6 خروجی و 2 تا هم رله که مستقل که یکی پالس داشته یاشه و دیگری بصورت تاگل کار کنه ، لطفا اگر ایمیل و یا تلفن داری مرحمت کن تا در این مورد زاحم شما بشوم و زحمت شما رو هم جبران خواهم کرد
سلام
لطفا فایل پیوست رو هم لطف کرده و ضمیمه کنید تا دریافت شود
ما همچنان منتظیریم عزیزنقل قول:
نوشته اصلی توسط eshgh_namordeh [Dear Guest/Member you can't see link before replyclick here to register]
سلام دوستان ببخشید من این پروژه را باید برای پروژه پایانی با زبان بسکام تحویل بدم خواهش می کنم کمک کنید خیلی فوری هست بی نهایت ممنونم
دوستان میشه از هر نوع 315 یا 433 برای گیرنده و فرستنده استفاده کرد؟
سلام
بی زحمت فایل ضمیمه بسکام رو قرار بدید
دوستان کسی اطلاع داره چطوری میشه از سالم بودن این فرستده های لرنینگ مطلع شد؟
آیا مداری وجود داره که بشه متوجه شد فرستنده ای که داریم (حالا هر چن کانالی که داره) سالمه یا نه؟بدون اینکه بخوایم براش یه گیرنده لرنینگ بسازیم و با گیرنده ستش کنیم
سلام ممنون از زحماتنقل قول:
لطفا فايل هگز و نقشه مدار رو قرار بدين من لينكي نديدم
با سلام
دوست عزیز پایین تصویر اگر موس را بر روی کلمه [Dear Guest/Member you can't see link before replyclick here to register] کلیک کنید میتوانید فایل های ضمیمه را دانلود کنید
[Dear Guest/Member you can't see link before replyclick here to register]
فایل خرابه دانلود میکنم باز نمیشه اگه کسی داره ممنون میشم بزاره.
از لینک زیر دانلودش کننقل قول:
نوشته اصلی توسط shahrivar88 [Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
:hi:
با سلام
آيا ممكن است كد سورس Bascom اين برنامه را در سايت قرار دهيد
با تشکر از eshgh_namordehبخاطر توضیحات قشنگشون
با این توضیحات پس ما نیازی به دیکدر نداریم و میکرو این کارا رو میکنه برامون؟
با سلام
آيا ممكن است كد سورس Bascom اين برنامه را در سايت قرار دهيد
با سلام
بابت این پستتون نهایت تشکر رو دارم فقط تو شماتیک دیدم dip5 , dip6 قرار دادین متاسفانه نمیتوونم بفهمم واسه چیه و همینطور tst1 ~tst4 . البته ببخشید من الکترونیک نخووندم از اینکه سئولاتم سطحش پایینه از همه عذر میخوام