PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درخواست کمک



saeedeh1988
12-07-2010, 18:14
سلام
من میخوام با استفاده از یه میکرو atmega32 با یه فتوسل و یه لامپ 12 ولت یه کنترلر روشنایی بسازم طوری که وقتی نور محیط کم میشه نور لامپ زیاد بشه و وقتی نور محیط زیاد میشه نور لامپ کم بشه به روش pwm .البته میخوام به صورت دستی هم قابل کنترل باشه یعنی خودمم هم بتونه میزان نور خروجی رو هر زمان که خواستم دستی تنظیم کنم کسی هست که بتونه کمکم کنه؟
البته خودم یه برنامه نصفه نیمه نوشتم اما نمیدونم چه قد درسته!!!

saeedeh1988
12-07-2010, 18:16
اگه درمورد سخت افزارش هم میتونید کمکم کنید

saeedeh1988
12-07-2010, 18:18
راستی برنامه با bascom باشه

هنرفر
13-07-2010, 00:17
خوب برنامه را بزارید تا دوستان کمکتون کنند.

saeedeh1988
14-07-2010, 15: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

هنرفر
14-07-2010, 18:34
من برنامه تون را اصلاح کردم.یه مشکل کوچیک داشت.در مورد سخت افزار هم خودتون پیشنهاد بدید ما کمکتون میکنیم.

saeedeh1988
15-07-2010, 08:28
ممنون
اما برای قسمت کنترلیش چی؟ چی باید بهش اضافه کنم؟

ghaem313
15-07-2010, 11:39
سلام
من فکر کنم که برای کنترلش با پتانسیومتر بشه این کارو کرد
توسط adc یه عدد به به دست می آید که به عنوان ضریب در پهنای پالس ضرب بشه

saeedeh1988
16-07-2010, 10:31
نه. منظورم از قسمت کنترلی اینه که خودم با استفاده از یه صفحه کلید بهش مقدار بدم با توجه به اون نور خروجی رو تنظیم کنه!

saeedeh1988
17-07-2010, 16:19
لطفا اگه کسی میتونه کمکم کنه

هنرفر
17-07-2010, 21:11
دوست عزیز الان وقت ندارم ولی من کمکتون میکنم

ghaem313
17-07-2010, 23:12
نه. منظورم از قسمت کنترلی اینه که خودم با استفاده از یه صفحه کلید بهش مقدار بدم با توجه به اون نور خروجی رو تنظیم کنه!
خب برای این کار یه کی پد ماتریسی رو به یکی از پورت ها وصل میکنی
آموزش نصب کیپد هم تو آموزش AVR که توسط رضا سپاس یار نوشته شده هست
این جوری میشه عدد خونده شده رو توی رجیستر ocr ریخت و با مد fast pwm نور لامپ رو کنترل کرد
اگه از تایمر 8 بیتی استفاده کنی میشه یه عدد بین 0 تا 100 داد و در 2.55 ضربش کرد
اگه 16 بیتی باشه میشه در 6.5535 ضربش کرد

البته دوستان با تجربه تری تو این سایت هستند و میتونن کمکت کنن

saeedeh1988
18-07-2010, 14:43
دوستان من خودم از نظر تئوری میدونم که باید چیکار کنم که باید یه کیپد به میکرو وصل کنم و یه کلید که تغییر وضعیت بده از حالت اتومات بره رو حالت دستی و مقداری که دستی بهش میدم رروی یه ال سی دی نشون بده اما چون وقت ندارم که خیلی با برنامه کار کنم و مدام روی میکرو بریزم ببینم کار نمیکنه:( میخوام یه نفر واسم برنامم رو اصلاح کنه و کاملش رو واسم بذاره . لطفا کمک کنید

hamedtv
13-01-2012, 20:35
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

hamedtv
13-01-2012, 20:39
البته یه then جا افتاد

ali_h
14-01-2012, 12:38
برنامتون به نظر درست میاد اگرچه می شد کوتاه تر و خیلی گویا تر نوشتش. من فقط اشتباه هاتون رو تصحیح کردم و با رنگ قرمز نشون دادم.

البته یه نکته برنامه نویسی مخصوصاً با میکرو:
به هیچ عنوان از دستور 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 هم بزارید.

hamedtv
17-01-2012, 21:27
برنامتون به نظر درست میاد اگرچه می شد کوتاه تر و خیلی گویا تر نوشتش. من فقط اشتباه هاتون رو تصحیح کردم و با رنگ قرمز نشون دادم.

البته یه نکته برنامه نویسی مخصوصاً با میکرو:
به هیچ عنوان از دستور 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 هم بزارید.



با سلام
اگر ممکن بر نامه رو به سبک خودتون بنویسید تا ما هم یه چیز جدید یاد بگیریم

ali_h
17-01-2012, 23:16
با سلام
اگر ممکن بر نامه رو به سبک خودتون بنویسید تا ما هم یه چیز جدید یاد بگیریم

سلام، البته شما که استاد ما هستین ولی من برنامه رو به شکل زیر ترجیح می دم :





$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 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 n8An12gulEpm1wAAAAASUVORK5CYII=You can see links before reply

mohamad_musav
27-09-2012, 22:56
سلام کسی همین پروژه رو به زبان c نمس تونه توضیح بده؟ من خوشم اومد از این پروزه اما بسکام بلد نیستم زیاد.