توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درخواست کمک
saeedeh1988
12-07-2010, 19:14
سلام
من میخوام با استفاده از یه میکرو atmega32 با یه فتوسل و یه لامپ 12 ولت یه کنترلر روشنایی بسازم طوری که وقتی نور محیط کم میشه نور لامپ زیاد بشه و وقتی نور محیط زیاد میشه نور لامپ کم بشه به روش pwm .البته میخوام به صورت دستی هم قابل کنترل باشه یعنی خودمم هم بتونه میزان نور خروجی رو هر زمان که خواستم دستی تنظیم کنم کسی هست که بتونه کمکم کنه؟
البته خودم یه برنامه نصفه نیمه نوشتم اما نمیدونم چه قد درسته!!!
saeedeh1988
12-07-2010, 19:16
اگه درمورد سخت افزارش هم میتونید کمکم کنید
saeedeh1988
12-07-2010, 19:18
راستی برنامه با bascom باشه
خوب برنامه را بزارید تا دوستان کمکتون کنند.
saeedeh1988
14-07-2010, 16:48
نمیدونم چرا اینجا نمیشه فایلی ضمیمه کرد 8O
این برنامه است:
$regfile = "m132def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
Enable Timer1
Dim W As Word
Dim B As Byte
Start Timer1
Do
Start Adc
W = Getadc(0)
Stop Adc
B = W / 4
Pwm1a = B
Wait 1
Loop
کمکم کنید ممنون میشم
End
من برنامه تون را اصلاح کردم.یه مشکل کوچیک داشت.در مورد سخت افزار هم خودتون پیشنهاد بدید ما کمکتون میکنیم.
saeedeh1988
15-07-2010, 09:28
ممنون
اما برای قسمت کنترلیش چی؟ چی باید بهش اضافه کنم؟
ghaem313
15-07-2010, 12:39
سلام
من فکر کنم که برای کنترلش با پتانسیومتر بشه این کارو کرد
توسط adc یه عدد به به دست می آید که به عنوان ضریب در پهنای پالس ضرب بشه
saeedeh1988
16-07-2010, 11:31
نه. منظورم از قسمت کنترلی اینه که خودم با استفاده از یه صفحه کلید بهش مقدار بدم با توجه به اون نور خروجی رو تنظیم کنه!
saeedeh1988
17-07-2010, 17:19
لطفا اگه کسی میتونه کمکم کنه
دوست عزیز الان وقت ندارم ولی من کمکتون میکنم
ghaem313
18-07-2010, 00:12
نه. منظورم از قسمت کنترلی اینه که خودم با استفاده از یه صفحه کلید بهش مقدار بدم با توجه به اون نور خروجی رو تنظیم کنه!
خب برای این کار یه کی پد ماتریسی رو به یکی از پورت ها وصل میکنی
آموزش نصب کیپد هم تو آموزش AVR که توسط رضا سپاس یار نوشته شده هست
این جوری میشه عدد خونده شده رو توی رجیستر ocr ریخت و با مد fast pwm نور لامپ رو کنترل کرد
اگه از تایمر 8 بیتی استفاده کنی میشه یه عدد بین 0 تا 100 داد و در 2.55 ضربش کرد
اگه 16 بیتی باشه میشه در 6.5535 ضربش کرد
البته دوستان با تجربه تری تو این سایت هستند و میتونن کمکت کنن
saeedeh1988
18-07-2010, 15:43
دوستان من خودم از نظر تئوری میدونم که باید چیکار کنم که باید یه کیپد به میکرو وصل کنم و یه کلید که تغییر وضعیت بده از حالت اتومات بره رو حالت دستی و مقداری که دستی بهش میدم رروی یه ال سی دی نشون بده اما چون وقت ندارم که خیلی با برنامه کار کنم و مدام روی میکرو بریزم ببینم کار نمیکنه:( میخوام یه نفر واسم برنامم رو اصلاح کنه و کاملش رو واسم بذاره . لطفا کمک کنید
regfile = "m132def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
config portb=input
Enable Timer1
Dim W As Word
Dim B As Byte
dim a as bit
Start Timer1
Do
Start Adc
goto main
loop
main:
if portb.0=1
if a=0 then
a=1
else
a=0
endif
endif
do
if portb=0 then exit do
loop
if a=1 then goto manual
if a=0 then goto auto
goto main
auto:
W = Getadc(0)
B = W / 4
Pwm1a = B
goto main
manual:
if portb.1=1 then incr b
if portb.2=1 then decr b
pwm1a=b
waitms 100
goto main
برنامتون به نظر درست میاد اگرچه می شد کوتاه تر و خیلی گویا تر نوشتش. من فقط اشتباه هاتون رو تصحیح کردم و با رنگ قرمز نشون دادم.
البته یه نکته برنامه نویسی مخصوصاً با میکرو:
به هیچ عنوان از دستور Goto استفاده نکنید. قانون کلی اینه که اگر برنامه به جایی رسید که مجبور شدین از دستور Goto استفاده کنید مطمئن باشید راه اشتباهی رو برای نوشتن برنامه انتخاب کردین و راه بهتری هم وجود داشته.
در برنامه های پیچیده این دستور باعث هنگ کردن میکرو و سخت شدن رفع اشکال برنامه می شه.
$regfile = "m132def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
config portb=input
'برای فعال کردن pullup های داخلی پورت B
portb=255
Enable Timer1
Dim W As Word
Dim B As Byte
dim a as bit
Start Timer1
Do
Start Adc
goto main
loop
main:
if pinb.0=1 then
if a=0 then
a=1
else
a=0
endif
endif
do
if pinb=0 then exit do
loop
if a=1 then goto manual
if a=0 then goto auto
goto main
auto:
W = Getadc(0)
B = W / 4
Pwm1a = B
goto main
manual:
if pinb.1=1 then incr b
if pinb.2=1 then decr b
pwm1a=b
waitms 100
goto main
end
دقت کنید که pullup های پورت B هم غیر فعال هستن. در ساخت سخت افزار اونها رو لحاظ کنید یا خطی که با سبز نشون دادم رو اضافه کنید.
بهتره در آخر برنامتون end هم بزارید.
برنامتون به نظر درست میاد اگرچه می شد کوتاه تر و خیلی گویا تر نوشتش. من فقط اشتباه هاتون رو تصحیح کردم و با رنگ قرمز نشون دادم.
البته یه نکته برنامه نویسی مخصوصاً با میکرو:
به هیچ عنوان از دستور goto استفاده نکنید. قانون کلی اینه که اگر برنامه به جایی رسید که مجبور شدین از دستور goto استفاده کنید مطمئن باشید راه اشتباهی رو برای نوشتن برنامه انتخاب کردین و راه بهتری هم وجود داشته.
در برنامه های پیچیده این دستور باعث هنگ کردن میکرو و سخت شدن رفع اشکال برنامه می شه.
$regfile = "m132def.dat"
$crystal = 1000000
config adc = single , prescaler = auto , reference = avcc
config timer1 = pwm , pwm = 8 , compare a pwm = clear down , prescale = 1
config portb=input
'برای فعال کردن pullup های داخلی پورت b
portb=255
enable timer1
dim w as word
dim b as byte
dim a as bit
start timer1
do
start adc
goto main
loop
main:
If pinb.0=1 then
if a=0 then
a=1
else
a=0
endif
endif
do
if pinb=0 then exit do
loop
if a=1 then goto manual
if a=0 then goto auto
goto main
auto:
W = getadc(0)
b = w / 4
pwm1a = b
goto main
manual:
If pinb.1=1 then incr b
if pinb.2=1 then decr b
pwm1a=b
waitms 100
goto main
end
دقت کنید که pullup های پورت b هم غیر فعال هستن. در ساخت سخت افزار اونها رو لحاظ کنید یا خطی که با سبز نشون دادم رو اضافه کنید.
بهتره در آخر برنامتون end هم بزارید.
با سلام
اگر ممکن بر نامه رو به سبک خودتون بنویسید تا ما هم یه چیز جدید یاد بگیریم
با سلام
اگر ممکن بر نامه رو به سبک خودتون بنویسید تا ما هم یه چیز جدید یاد بگیریم
سلام، البته شما که استاد ما هستین ولی من برنامه رو به شکل زیر ترجیح می دم :
$regfile = "m32def.dat"
$crystal = 1000000
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down
Config Portb = Input
Portb = 255
Dim W As Word
Dim Lastbstate As Bit
Dim B As Byte
Dim A As Bit
Dim State As Byte
' State = 0 : Auto Mode
' State = 1 : Manual Mode
Start Timer1
Start Adc
Do
If Lastbstate <> Pinb.0 Then
If Pinb.0 = 0 Then
If State = 0 Then State = 1 Else State = 0
End If
Lastbstate = Pinb.0
End If
If State = 0 Then
W = Getadc(0)
B = W / 4
Pwm1a = B
Else
If Pinb.1 = 0 Or Pinb.2 = 0 Then
If Pinb.1 = 0 Then Incr B
If Pinb.2 = 0 Then Decr B
Pwm1a = B
Waitms 100
End If
End If
Loop
End
این طوری حلقه Do Loop شما دائماً منتظر ورودی از کاربر باقی نمی مونه و پردازنده در گیر ورودی کاربر نمی شه و شما می تونید در حلقه DoLoop قسمت های دیگه ای هم به برنامه اضافه کنید.
دلیل این که در if ها pinb.0=1 به pinb.0=0 تغییر پیدا کرده اینه که من از PullUp های داخلی میکرو استفاده کردم که باعث می شه در حالت پیش فرض پایه های ورودی میکرو، مقدار 1 رو داشته باشن.
بهتره یک خازن هم روی پایه pinb.0 به صورت زیر قرار بدین تا خروجی کلید Debounce بشه و میکرو سریع بین حالت Auto و Manual سوئیچ نکنه.
You can see links before reply CdsOzAAAIMElEQVR4nO3c0W7bOBBAUf//T6cPBQatLTGUNUNR4jkPi61jy5SHvFuk2b5+ACjzunoBAE8msg CFRBagkMgCFBJZgEIiC1BIZAEKiSxAIZEFKCSyAIVEFqCQyE7t 9b+rlwMctu65fY1yZnk9DwIzW/fEzhzZ9qt0Fm5k3eM6bWR7XqKzcBfrntUzv9Osu/7m8/sfBGaz7kG9S2T3riOycAvrHtQJI7tX0n//2X4+MJt1T+ktIvvd48A81j2lIgsMsO4pFVlggHVP6S0i63uycH ePPaWv+3hb9t6NfD5e+wkCGZ55UC/r5bf+Xfnm7XQ+CMzmsQf14moe8bnynrur+diAZM7qjNoNVVi4E cd1Unu/yVVYuBcndmrtbywA83NuAQqJLEAhkYUb832k+RkP3NWvPw7IDB 4+ldm24Gzr4dY6f/Kaaz12Hv0//L/meniAxqY6v7VSLtt+cny17hR8Xnn80XvmCS/dfA9YT7Wn3tds3j7nut319UUaCxizQ97eov3LqjUMeI/B9nbYVV2bbT2lVvhPyDw2P+G91J4ZxDMiu/l2I9ZQ/QbjtbfUhZGdZD11Ko43DZ1b6/wsvt69r+bf0hmPbz7h7crxktfW71R+XXnPc4o8cPfPFrXZ1lNH ZAfr+XhThrL55M8C7j3naGQ3r/y55v4FNJ7Q/lKK8r+y+kK/Lqzo3g+93diPhGc6uhUPvfCn7y+M37zaa6txnw9ufrV9/TML6HlhosdGtmdtRfd+9L2u+Hh4lC825KHXfj6t55Efkf17/arrXu3XtRXd+Bdvd92HxEP078MvXviTEdn4989H9h5sX//oAho32/85fKc8skXX//qtxy9stvXUOVkBjur5eFOGIrJniOxy66kjsoN1bq3zs3hAZHue UOSBkf35f3u1H1xzPXUUdqTNT3ivrWcG8V2/Ph/f+2XjaXvPyV1AqedHdoZjP9t6qj31vmbz9jnX7a5Gwtpv8V1kN 6+8+S5HF/Dz/6e096pcz4zsT7Nr1lPtwbc2lcam8vnP47GRfVvG5Sv5a7b1FFn hHmegrbfw8MhyCdMfQ15vQWTJZ/rD+JznJ7LkM30IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOH ILLkM30IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILLkM3 0IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILLkM30IIks+ 04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILLkM30IIks+04cgsu QzfQgiSz7ThyCy5DN9CCJLPtOHILLkM30IIks+04cgsuQzfQgi Sz7ThyCy5Ltk+q8P/a+qXhsrE1nyjZz+Z1sPpdYupZrIkm/Y9NsxbS/j6O954TsiS74x0+95l1/7a5dSTWTJNzKyR5/21la7lGoiS76pIrv5qnihXUo1kSXfgOlnXd8upZrIkk9kIYgs+ UQWgsiy63WdzrVl3eP568AekWXbBWX9X8/ysm7z/HVgj8iy64Kydm+brN2VdR3YI7LcVUqO7VKqiSx31bPBft2Hdin VRJa76gxoexPapVQTWW6s8W3czh1ol1JNZLm3zT83699+dinVR JYn+CKv/76wdG0sTmQBCoksQCGRBSgksuxq/5lSqatvHdKILNsuLKydw5OILLsUFs4TWfKZPgSRJZ/pQxBZ8pk+BJEln+lDEFnyDZ7+5hs11nBoef5ojpNElnwjp7/5Rv8+8vbVxpf2rn9ugaxOZMk3bPp/36KR0bdH2jluvAV8TWTJN2b6e+n8LrLR67eV28OcJLLku/Z7sl9HdrOt9jAniSz5bhrZzpfAISJLvodF9lPWylmByJLvYZHN WidrElnyiSwEkSWfyEIQWfJdG9m3RxoJ7nmaPcxJIku+yyPbXs Pml0SWIiJLPtOHILLkM30IIks+04cgsuQzfQgiSz7ThyCy5DN9 CCJLPtOHILLkM30IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPt OHILLkM30IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILLk M30IIks+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILLkM30IIk s+04cgsuQzfQgiSz7ThyCy5DN9CCJLPtOHILIjrPZprHa/0CCytV5brl5UuXXuFH4lsoU2C7vCx7LIbUIPkS0kslcvBK5XHl lWVrS74EZElkJFuwtupPAYXH3AuVjd1oIbcRIKCRDgtBcSWcBp r6WwsDgHfgR5hWU59iOILCzLsR9BZGFZjv0IIgvLcuxHEFlYlm M/gsjCshz7EUQWluXYjyCysCzHfgSRhWU59iOILCzLsR9BZGFZjv 0IIgvLcuxHEFlYlmM/gsjCshz7EUQWluXYjyCysCzHfgSRhWU59iOILCzLsR9BZGFZjv 0IIgvLcuxHEFlYlmM/gsjCshz7EUQWluXYjyCysCzHfgSRhWU59iOILCzLsR9BZGFZjv 0IIgvLcuxHEFlYlmM/gsjCshz7EUQWluXYjyCysCzHfgSRhWU59iOILCzLsT/gdZ2rbx34ktPb68LC6izcl6N7gMICRzm9AIVEFqCQyAIUElmAQ iILUEhkAQqJLEAhkU3jJ2GBT852Dv/HAbDJwU6jsMAnZxugkMgCFBJZgEIiC1BIZAEKiSxAIZEFKCSy5 fw8LKzMma/l/zuAxTnw5RQWVubMAxQSWYBCIgtQSGQBCoksQCGRBSgksgCFRBa gkMgCFBJZgEIiC1BIZAEKiSxAIZEFKCSyAIVEFqCQyAIUElmAQ n8An12gulEpm1wAAAAASUVORK5CYII=You can see links before reply
mohamad_musav
27-09-2012, 22:56
سلام کسی همین پروژه رو به زبان c نمس تونه توضیح بده؟ من خوشم اومد از این پروزه اما بسکام بلد نیستم زیاد.
Powered by vBulletin® Version 4.2.1 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.