با سلام.
من تو این پروژه قراره 30 سانت LED نواری با افکت fade ( یعنی آرام آرام رنگ عوض میشه ) و با سرعت متغیر راه اندازی کنم. که با کم و زیاد کردن پتانسیومتر سرعت کم و زیاد میشه.
این عکس پروژه هست:

یکم در باره ی ال ای دی نواری حرف بزنم:
خوب از اسمشون معلومه. ال ایدی هایی هستن که روی یه PCB قابل انعطاف لحیم شدن و به شکل نواری هستند و معمولا سه تا سه تا سری هستند و ولتاژشون 12 ولت هست.
کاربردش هم تزئیناتی هست. این ال ایدی نواری ها پشتشون چسب دارن یعنی می تونین هر جا بچسبونینشون.
نورشون هم عالی هست ولی باید یه درایور خوب داشته باشن که من یه نوع خوب دست سازش رو استفاده کردم.
این ال ای دی نواری ای که من استفاده کردم ، ولتاژش 12 ولت و از نوع کاتد مشترک هست یعنی باید با + سویچ بشه.
بریم سراغ شماتیک :

درایور رو میبینین؟ به همین سادگی . نیازی نیست حتما از سری ULN استفاده کنین. مقاومت ها هم یه کم بالا پایین بشن مشکلی نداره.
جریان اصلی از A92 میگذره که PNP هست و از BC337 برای روشن کردن A92 استفاده شده . نکته ی جالب اینه که با ولتاژ 5 ولت ، 12 ولت رو سویچ میکنه.
یه بخش مدار هم که راه اندازی ATtiny13 هست و یه بخش دیگه هم رگولاتور 5 ولت خطی.
خوب مدار کامل شد.
PCB:

فقط یه نکته ای در مورد PCB هست اونم اینکه جامپر ها رو با TOP layer نشون دادم. که track نیستن در واقع جامپر هستند . میبینید که همشون هم خط صاف هستند.
فایل PCB رو هم به همراه همه ی عکس ها و برنامه آخر پست گذاشتم. از اونجا دانلود کنین.
برای اینکه بفهمین کدوم قطعه کدومه، تو محیط Altium ماوس رو روی اون قطعه نگه دارین تا سمت بالا و چپ ، مشخطاتش رو بنویسه.
برنامه: خوب کل کار هایی که ما باید بکنیم تو این عکس معلوم هست . همه چیز واضحه :

این هم برنامه به زبان بیسیک که با بسکام نوشته شده که به لطف ادیتور جدید کد ، خیلی زیبا دیده میشه :
ولی چون بسکام نداره ، ویژوال بیسیک رو زدم که کانفیگ ها رنگی نشدن.
[code=vb]
$regfile = "attiny13a.dat"
$crystal = 9600000
Declare Sub Change_color
Declare Sub Ad
'============================================ ===================================
$hwstack = 16
$swstack = 16
$framesize = 16
'============================================ ===================================
Config Portb.1 = Output 'RED
Config Portb.2 = Output 'GREEN
Config Portb.3 = Output 'BLUE
Config Portb.0 = Input 'Tri-state
Config Portb.4 = Input 'POT
'============================================ ===================================
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Portb.0 = 0
Portb.4 = 0
'============================================ ===================================
Red Alias Portb.1
Green Alias Portb.2
Blue Alias Portb.3
'============================================ ===================================
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'============================================ ===================================
Config Timer0 = Timer , Prescale = 8
On Ovf0 Change_color
Enable Timer0
Timer0 = 176
Enable Interrupts
Stop Timer0
'============================================ ===================================
Const Maximum = 100
Const Minimum = 1
Dim Count As Byte
Count = 0
Dim Pwm_r As Byte
Pwm_r = 1
Dim Pwm_g As Byte
Pwm_g = 1
Dim Pwm_b As Byte
Pwm_b = 1
Dim I As Byte
I = 0
Dim W As Word
W = 1
'============================================ ===================================
Start Timer0
For I = 1 To 100 Step 1
Gosub Ad
Pwm_r = I
Waitms W
Next I
Do
For I = 1 To 100 Step 1
Gosub Ad
Pwm_g = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_r = I
Waitms W
Next I
For I = 1 To 100 Step 1
Gosub Ad
Pwm_b = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_g = I
Waitms W
Next I
For I = 1 To 100 Step 1
Gosub Ad
Pwm_r = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_b = I
Waitms W
Next I
Loop
'============================================ ===================================
End
'============================================ ===================================
Change_color:
Stop Timer0
Timer0 = 176
If Count = Maximum Then
Count = Minimum
Else
Incr Count
End If
If Pwm_r < Count Then
Red = 0
Else
Red = 1
End If
If Pwm_g < Count Then
Green = 0
Else
Green = 1
End If
If Pwm_b < Count Then
Blue = 0
Else
Blue = 1
End If
Start Timer0
Return
Ad:
W = Getadc(2)
W = W / 10
If W < 2 Then W = 2
If W > 100 Then W = 100
Return
[/code]
این هم فایلی که کل محتوای پروژه توش هست :
دانلود
ویرایش :
فیلم یک دقیقه ای نیز قرار داده شد.
آدرس ویدئو
ویرایش:
قسمتی از PCB ایراد داشت که یادم رفت بگم : ترکی بین مقاومت ها R7 و R8 نیست که باید دستی با یه تیکه سیم اتصال بدین .
من تو این پروژه قراره 30 سانت LED نواری با افکت fade ( یعنی آرام آرام رنگ عوض میشه ) و با سرعت متغیر راه اندازی کنم. که با کم و زیاد کردن پتانسیومتر سرعت کم و زیاد میشه.
این عکس پروژه هست:

یکم در باره ی ال ای دی نواری حرف بزنم:
خوب از اسمشون معلومه. ال ایدی هایی هستن که روی یه PCB قابل انعطاف لحیم شدن و به شکل نواری هستند و معمولا سه تا سه تا سری هستند و ولتاژشون 12 ولت هست.
کاربردش هم تزئیناتی هست. این ال ایدی نواری ها پشتشون چسب دارن یعنی می تونین هر جا بچسبونینشون.
نورشون هم عالی هست ولی باید یه درایور خوب داشته باشن که من یه نوع خوب دست سازش رو استفاده کردم.
این ال ای دی نواری ای که من استفاده کردم ، ولتاژش 12 ولت و از نوع کاتد مشترک هست یعنی باید با + سویچ بشه.
بریم سراغ شماتیک :

درایور رو میبینین؟ به همین سادگی . نیازی نیست حتما از سری ULN استفاده کنین. مقاومت ها هم یه کم بالا پایین بشن مشکلی نداره.
جریان اصلی از A92 میگذره که PNP هست و از BC337 برای روشن کردن A92 استفاده شده . نکته ی جالب اینه که با ولتاژ 5 ولت ، 12 ولت رو سویچ میکنه.
یه بخش مدار هم که راه اندازی ATtiny13 هست و یه بخش دیگه هم رگولاتور 5 ولت خطی.
خوب مدار کامل شد.
PCB:

فقط یه نکته ای در مورد PCB هست اونم اینکه جامپر ها رو با TOP layer نشون دادم. که track نیستن در واقع جامپر هستند . میبینید که همشون هم خط صاف هستند.
فایل PCB رو هم به همراه همه ی عکس ها و برنامه آخر پست گذاشتم. از اونجا دانلود کنین.
برای اینکه بفهمین کدوم قطعه کدومه، تو محیط Altium ماوس رو روی اون قطعه نگه دارین تا سمت بالا و چپ ، مشخطاتش رو بنویسه.
برنامه: خوب کل کار هایی که ما باید بکنیم تو این عکس معلوم هست . همه چیز واضحه :

این هم برنامه به زبان بیسیک که با بسکام نوشته شده که به لطف ادیتور جدید کد ، خیلی زیبا دیده میشه :
ولی چون بسکام نداره ، ویژوال بیسیک رو زدم که کانفیگ ها رنگی نشدن.
[code=vb]
$regfile = "attiny13a.dat"
$crystal = 9600000
Declare Sub Change_color
Declare Sub Ad
'============================================ ===================================
$hwstack = 16
$swstack = 16
$framesize = 16
'============================================ ===================================
Config Portb.1 = Output 'RED
Config Portb.2 = Output 'GREEN
Config Portb.3 = Output 'BLUE
Config Portb.0 = Input 'Tri-state
Config Portb.4 = Input 'POT
'============================================ ===================================
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Portb.0 = 0
Portb.4 = 0
'============================================ ===================================
Red Alias Portb.1
Green Alias Portb.2
Blue Alias Portb.3
'============================================ ===================================
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'============================================ ===================================
Config Timer0 = Timer , Prescale = 8
On Ovf0 Change_color
Enable Timer0
Timer0 = 176
Enable Interrupts
Stop Timer0
'============================================ ===================================
Const Maximum = 100
Const Minimum = 1
Dim Count As Byte
Count = 0
Dim Pwm_r As Byte
Pwm_r = 1
Dim Pwm_g As Byte
Pwm_g = 1
Dim Pwm_b As Byte
Pwm_b = 1
Dim I As Byte
I = 0
Dim W As Word
W = 1
'============================================ ===================================
Start Timer0
For I = 1 To 100 Step 1
Gosub Ad
Pwm_r = I
Waitms W
Next I
Do
For I = 1 To 100 Step 1
Gosub Ad
Pwm_g = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_r = I
Waitms W
Next I
For I = 1 To 100 Step 1
Gosub Ad
Pwm_b = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_g = I
Waitms W
Next I
For I = 1 To 100 Step 1
Gosub Ad
Pwm_r = I
Waitms W
Next I
For I = 100 To 1 Step -1
Gosub Ad
Pwm_b = I
Waitms W
Next I
Loop
'============================================ ===================================
End
'============================================ ===================================
Change_color:
Stop Timer0
Timer0 = 176
If Count = Maximum Then
Count = Minimum
Else
Incr Count
End If
If Pwm_r < Count Then
Red = 0
Else
Red = 1
End If
If Pwm_g < Count Then
Green = 0
Else
Green = 1
End If
If Pwm_b < Count Then
Blue = 0
Else
Blue = 1
End If
Start Timer0
Return
Ad:
W = Getadc(2)
W = W / 10
If W < 2 Then W = 2
If W > 100 Then W = 100
Return
[/code]
این هم فایلی که کل محتوای پروژه توش هست :
دانلود
ویرایش :
فیلم یک دقیقه ای نیز قرار داده شد.
آدرس ویدئو
ویرایش:
قسمتی از PCB ایراد داشت که یادم رفت بگم : ترکی بین مقاومت ها R7 و R8 نیست که باید دستی با یه تیکه سیم اتصال بدین .
دیدگاه