PDA

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



morteza_rk
29-01-2010, 18:51
سلام به همگی

من نیاز به یک مدار ضرب کننده فرکانس دارم. این مدار باید فرکانس های ورودی رو که دریافت می کنه در عدد 1.35 ضرب کنه و در خروجی ظاهر کنه.

مثلا فرکانس 10 هرتز رو بگیره و 13.5 هرتز تحویل بده. فرکانس ورودی هم در محدوده ی 1 تا 200 هرتز هست.

روش کار رو می دونم ولی از لحاظ عملی براش مداری ندارم.

اگه اشتباه نکنم ما باید اول یه فرکانس 1.35 هرتز بسازیم ، بعد این فرکانس رو در فرکانسهای ورودی ضرب کنیم. اما مداری که بتونه این دو فرکانس رو در هم ضرب کنه نمی شناسم.

کسی می تونه کمکم کنه؟

1nafar
29-01-2010, 19:25
سلام
کافیه توی بخش جستوجوی تصویر گوگل " Frequency Multiplier " رو جستو کنید :

You can see links before reply
You can see links before reply
You can see links before reply

morteza_rk
29-01-2010, 19:38
ممنون مهندس

ولی یه مدار می خوام که دقیقا ضرب کننده این فرکانس باشه و با ولتاژ 12 ولت مثبت کار کنه ونیازی به منبع تغذیه متقارن نداشته باشه.

بخش اول کار سادست ، یعنی ما بوسیله ی آی سی 555 یه فرکانس 1.35 هرتز می سازیم ، حالا می مونه یک مدار که این فرکانس رو در فرکانسهای دیگه ضرب کنه.

دوستان نظر بدید که با کمک هم بتونیم یه مدار طراحی کنیم.

mahdi74
30-01-2010, 00:33
سلام .
mc1496 یک ضرب کننده است . datasheet رو نگاه کن شاید بتونی ازش استفاده کنی .

morteza_rk
30-01-2010, 13:05
سلام

ممنون ، میرم نگاه کنم. خبرشو میدم.

morteza_rk
31-01-2010, 15:07
مهندس این آی.سی که معرفی کردی ولتاژ منفی 8 ولت هم می خواد ، در صورتیکه من به مدار +12 ولت نیاز دارم ، از لحاظ تغذیه محدودیت دارم.

تصمیم گرفتم یه برنامه با avr برای انجام این کار بنویسم ، اگه موفق شدم میذارمش اینجا.

1nafar
31-01-2010, 18:53
سلام
خودت میتونی راحت تغییرش بدی . این مواردی که من گذاشتم مرجع برای کار شما هست .

morteza_rk
01-02-2010, 21:50
شما لطف داری مهندس ، ولی من از مدارهای مخابراتی زیاد خوشم نمیاد ، اینم چون فرکانسش پائین بود رفتم تو بحرش!

حالا برنامه ای با Atmega8 نوشتم که این کار رو انجام میده. کد برنامه رو پائین گذاشتم. ( با عرض شرمندگی کدی که قبلا گذاشته بودم توی ایجاد فرکانس های زیر 20 هرتز مشکل داشت ، در عوض کدهای جدید درست کار می کنن)

کد شماره ی یک : در این کد از کریستال ساعت برای تولید زمان 1 ثانیه ی دقیق استفاده شده.



$regfile = "m8def.dat"
$crystal = 1000000

$hwstack = 32
$swstack = 10
$framesize = 40

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Config Timer0 = Counter , Edge = Rising , Prescale = 1
Config Timer1 = Timer , Compare A = Toggle , Clear Timer = 1 , Prescale = 64
Config Timer2 = Timer , Async = On , Prescale = 128

Config Portc.1 = Input
Config Portc.2 = Input
Config Portb.4 = Output

Enable Timer0
Enable Timer1
Enable Timer2

Enable Ovf2
Enable Oc1a

Enable Interrupts

Portb.4 = 0

Stop Timer1
Stop Timer2

Timer2 = 0
Timer1 = 0
Counter0 = 0

On Ovf2 One_secend

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dim Fin As Single
Dim Tin As Single
Dim Tout As Single
Dim Tout1 As Integer

Dim Scale As Single
Dim First_scale As Eram Single

Dim I As Eram Byte
Dim J As Eram Byte
Dim K As Byte

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Start Timer2
Start Timer1

Do

Scale = 1.35

Loop

End


One_secend:

Stop Timer2

Fin = Counter0

Fin = Fin * Scale

Tin = 1 / Fin

Tin = Tin / 2 'Diuration of '1's

Tout = 15625 * Tin

Tout1 = Tout
Compare1a = Tout1


Timer2 = 0
Counter0 = 0

Start Timer2

Return


کد شماره ی دو ، بدون استفاده از کریستال ساعت و دارای کریستال 4 مگاهرتز


$regfile = "m8def.dat"
$crystal = 4000000

$hwstack = 32
$swstack = 10
$framesize = 40

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Configurations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Config Timer0 = Counter , Edge = Rising , Prescale = 1
Config Timer1 = Timer , Compare A = Toggle , Clear Timer = 1 , Prescale = 64
Config Timer2 = Timer , Prescale = 256

Config Portc.1 = Input
Config Portc.2 = Input
Config Portb.4 = Output

Enable Timer0
Enable Timer1
Enable Timer2

Enable Ovf2
Enable Oc1a

Enable Interrupts

Portb.4 = 0

Stop Timer1
Stop Timer2

Timer2 = 0
Timer1 = 0
Counter0 = 0

On Ovf2 One_secend

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variable ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dim Fin As Single
Dim Tin As Single
Dim Tout As Single
Dim Tout1 As Integer

Dim Scale As Single
Dim First_scale As Eram Single

Dim I As Eram Byte
Dim J As Eram Byte
Dim K As Byte : K = 1

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ initionaliz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Start Timer2

Start Timer1

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Main program ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Do

scale=1.35

Loop

End


One_secend:


If K = 62 Then

Stop Timer2

K = 1

Fin = Counter0
Fin = Fin * Scale

Tin = 1 / Fin
Tin = Tin / 2 'Diuration of '1's

Tout = 62500 * Tin

Tout1 = Tout

Compare1a = Tout1

Timer2 = 0
Counter0 = 0

Start Timer2

End If


Incr K

Return