امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 4
  • 1
  • 2
  • 3
  • 4
  • 5
اسیلوسکوپ با AVR
نویسنده پیام
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #1
اسیلوسکوپ با AVR
سلام به همه

بچه من یه اسیلوسکو طراحی کردم (البته با یه مقدار کپی برداری)ولی یک سر مشکلات داشتم هم توی برنامه نویسی هم تو مدارش .

اولین مشکلام اینکه خیلی نویز دارم

دومی اینکه مدار برای بالا پایین کردن دامنه سیگنال لازم دارم البته چندتایی پیدا کردم ولی دقیق نیستن (می خوام این پروژه عملی کنم)

سومی چرا توی پرتئوس نمی تونم این مدار هارو اجرا کنم فکر کنم از این باشه که از متن توی lcd استفاده می کنم وقتی کد
کد:
$regfile = "M32def.dat"
$crystal = 8000000
$lib "glcdKS108.LBX"
$include "my6_8.font"
$include "Font5x5.font"
$hwstack = 64
$swstack = 64
$framesize = 64

Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portc , _
Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 4 , Enable = 5 , Mode = 8
Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Portd = Input
'*******************************************************************************
Dim A As Word , B As Word , C As Word , D As Bit , E As Bit , Fr1 As Single
Dim Fr2 As Single , V1 As Single , V2 As Single , Speed As Word , F As Word
Dim Wiat As Word
Dim Aa As Long , Bb As Byte , Ii As Long
Config Single = Scientific , Digits = 1

'********************************timer *****************************************
Config Timer1 = Counter , Edge = Rising
Ddra.1 = 0
Porta.1 = 1
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
Enable Timer0
Enable Interrupts
'*******************************************************************************

Bb = 0
D = 0
E = 0
Speed = 1
Setfont Font5x5
Cls Graph
Cls
Do

Cls
Showpic 0 , 0 , Pic0
Wait 4
Exit Do
Loop
'surc
Cls Graph

Do
'*******************control****************************
Showpic 0 , 0 , Pic1
If Pind.2 = 1 And Speed < 1000 Then
Incr Speed
Lcdat 32 , 50 , "speed :" ; Speed , 1
End If
If Pind.3 = 1 And Speed > 0 Then
Decr Speed
Lcdat 32 , 50 , "speed :" ; Speed , 1
End If
If Pind.4 = 1 And Wiat < 2000 Then
Incr Wiat
Lcdat 32 , 50 , "time :" ; Wiat , 1
End If
If Pind.5 = 1 And Wiat > 0 Then
Decr Wiat
Lcdat 32 , 50 , "time :" ; Wiat , 1
End If
'*********************select ch1/ch2*******************
If Pind.0 = 1 And D = 0 Then
D = 1
Showpic 97 , 1 , Ch1 , 1
While Pind.0 = 1
Wend
Elseif Pind.0 = 1 And D = 1 Then
D = 0
Showpic 97 , 1 , Ch1
While Pind.0 = 1
Wend
Elseif D = 0 Then
Showpic 97 , 1 , Ch1
End If
If Pind.1 = 1 And E = 0 Then
E = 1
Showpic 112 , 1 , Ch2 , 1
While Pind.1 = 1
Wend
Elseif Pind.1 = 1 And E = 1 Then
E = 0
Showpic 112 , 1 , Ch2
While Pind.1 = 1
Wend
Elseif E = 0 Then
Showpic 112 , 1 , Ch2
End If
'*********************show signal**********************
'---------------------------line 1----------------------
If D = 1 Then
For A = 0 To 96
F = Getadc(0)
B = F / 16
B = 64 - B
V1 = F / 204.6
Pset A , B , 255
For C = 1 To Speed
Waitus 1
Next C
Next A
End If
'-----------------------line 2---------------------
If E = 1 Then
For A = 0 To 96
F = Getadc(4)
B = F / 16
B = 64 - B
V2 = F / 204.6
Pset A , B , 255
For C = 1 To Speed
Waitus 1
Next C
Next A
End If
'********************show other objct******************
Line(96 , 12) -(128 , 12) , 255
Lcdat 3 , 97 , "F1:"
Lcdat 4 , 97 , Fr1 ; "Hz"
Lcdat 5 , 97 , "F2:"
Lcdat 6 , 97 , Fr2 ; "Hz"
Lcdat 7 , 97 , "V1:" ; V1
Lcdat 8 , 97 , "V2:" ; V2

Waitms Wiat
Loop

Pic0:
$bgf "arm.bgf"
Pic1:
$bgf "as.bgf"
Ch1:
$bgf "Ch1.bgf"
Ch2:
$bgf "ch2.bgf"

البته کامل نیست هنوز فرکانس مترو ننوشتم (درمورد اونم مشکل دارم)
video

http://www.injairane.ir/uplodfile/IMAG0017.jpg


فایل‌(های) پیوست شده
.zip   h0x00i.zip (اندازه: 35.55 KB / تعداد دفعات دریافت: 130)

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
(آخرین ویرایش در این ارسال: ۲۶-دى-۱۳۹۰, ۱۷:۰۵:۵۲، توسط h0x00i.)
۲۹-شهریور-۱۳۹۰, ۱۹:۵۶:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : علي برقي
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
RE: اسیلوسکوپ با AVR
به نظر من که خوب اومد
برای بالا و پایین کردن باید یه ولتاژ رو باهاش جمع کنی که می تونی با یه opamp‌ اینکارو بکنی که گین هم بهت می ده
برای کوپلینگ ها هم کافیه یه خازن سر راهش بزاری و یا اتصال کوتاهش کنی
برای نویز هم اول یه ولتاژ بدون نوبز بهش بده ببین چی می شه فکر کنم دستت رو گذاشته بودی بهش خود اسکوپ عادی هم نویز می گیره اینجوری
بین نقاط هم باید خط بکشی نه اینکه فقط نقاط رو نشون بدی
و باید PCB‌هم داشته باشه اینجوری نیم شه نویزش رو بررسی کرد

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۳۰-شهریور-۱۳۹۰, ۱۰:۳۳:۵۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : h0x00i, رسول
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #3
RE: اسیلوسکوپ با AVR
مرسی آقا هادی

الان یکی از مشکلاتم اینه که نمی تونم فرکانس محاسبه کنم توی این خیلی مشکل دارم هرکری می کنم نمی تونم باعث اختلال روی کار نمایش میشه نمی دونم چی کار کنم ؟؟؟

یه مشکل اساسی دیگمم اینکه برنامرو که نوشتم وقتی توی پرتئوس اجرا می کنم پر تئوس خطا میده
منظورتون نفهمیدم بین نقاط باید خط بکشم
[تصویر:  8lrvm896n0ww50onrkzn.bmp]

یعنی بین این نقاط
یه مداره ساده برای کنترل دامنه و AC/DC اسکوپ

[تصویر:  6s6i2e5wawza13s6sve.png]

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
(آخرین ویرایش در این ارسال: ۳۰-شهریور-۱۳۹۰, ۱۱:۵۲:۵۵، توسط h0x00i.)
۳۰-شهریور-۱۳۹۰, ۱۰:۵۶:۳۷
وب سایت ارسال‌ها
پاسخ
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #4
RE: اسیلوسکوپ با AVR
این برنامه پرتئوس
مشکل پرتئوس هم حل شود باید فونت آخر برنامه تعریف می کردم

کد
کد:
$regfile = "M32def.dat"
$crystal = 8000000
$lib "glcdKS108.LBX"

$hwstack = 64
$swstack = 64
$framesize = 64

Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portc , _
Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 4 , Enable = 5 , Mode = 8
Config Adc = Single , Prescaler = Auto , Reference = Internal

Config Portd = Input
'*******************************************************************************
Dim A As Word , B As Word , C As Word , D As Bit , E As Bit , Fr1 As Single
Dim Fr2 As Single , V1 As Single , V2 As Single , Speed As Word , F As Word
Dim Wiat As Word
Dim Aa As Long , Bb As Byte , Ii As Long
Config Single = Scientific , Digits = 1

'********************************timer *****************************************
Config Timer1 = Counter , Edge = Rising
Ddra.1 = 0
Porta.1 = 1
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
Enable Timer0
Enable Interrupts
'*******************************************************************************

Bb = 0
D = 0
E = 0
Speed = 1
Setfont Font5x5
Cls Graph
Cls
Do

   Cls
   Showpic 0 , 0 , Pic0
   Wait 4
   Exit Do
Loop
'surc
Cls Graph

Do
'*******************control****************************
    Showpic 0 , 0 , Pic1

    If Pind.2 = 1 And Speed < 1000 Then
      Incr Speed
    End If
    If Pind.3 = 1 And Speed > 0 Then
      Decr Speed
    End If
    If Pind.4 = 1 And Wiat < 2000 Then
      Incr Wiat
    End If
    If Pind.5 = 1 And Wiat > 0 Then
      Decr Wiat
    End If
    Showpic 0 , 0 , Pic1

'*********************select ch1/ch2*******************
    If Pind.0 = 1 And D = 0 Then
    D = 1
    Showpic 97 , 1 , Ch1 , 1
    While Pind.0 = 1
    Wend
    Elseif Pind.0 = 1 And D = 1 Then
    D = 0
    Showpic 97 , 1 , Ch1
    While Pind.0 = 1
    Wend
    End If
    '////////////////////
    If Pind.1 = 1 And E = 0 Then
    E = 1
    Showpic 112 , 1 , Ch2 , 1
    While Pind.1 = 1
    Wend
    Elseif Pind.1 = 1 And E = 1 Then
    E = 0
    Showpic 112 , 1 , Ch2
    While Pind.1 = 1
    Wend
    End If
'*********************show signal**********************
'---------------------------line 1----------------------
    If D = 1 Then
      For A = 0 To 96
      F = Getadc(0)
      B = F / 16
      B = 64 - B
      V1 = F / 204.6
      Pset A , B , 255
      For C = 1 To Speed
         Waitus 1
      Next C
      Next A
     End If
     '-----------------------line 2---------------------
     If E = 1 Then
      For A = 0 To 96
      F = Getadc(4)
      B = F / 16
      B = 64 - B
      V2 = F / 204.6
      Pset A , B , 255
      For C = 1 To Speed
         Waitus 1
      Next C
      Next A
     End If
'********************show other objct******************
    Line(96 , 12) -(128 , 12) , 255
    Lcdat 3 , 97 , "F1:"
    Lcdat 4 , 97 , Fr1 ; "Hz"
    Lcdat 5 , 97 , "F2:"
    Lcdat 6 , 97 , Fr2 ; "Hz"
    Lcdat 7 , 97 , "V1:" ; V1
    Lcdat 8 , 97 , "V2:" ; V2

    Waitms Wiat
Loop


   $include "Font5x5.font"
Pic0:
   $bgf "arm.bgf"
Pic1:
   $bgf "as.bgf"
Ch1:
   $bgf "Ch1.bgf"
Ch2:
   $bgf "ch2.bgf"


فایل‌(های) پیوست شده
.zip   osc.zip (اندازه: 218.78 KB / تعداد دفعات دریافت: 200)

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۳۰-شهریور-۱۳۹۰, ۱۳:۳۸:۰۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : علي برقي, sharin, alimogmov
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #5
RE: اسیلوسکوپ با AVR
کسی نیست کمک کنه ؟؟؟؟

من در مورد اندازه گیری فرکانس مشکل دارم و همین طور مدار کنترل دامنه



فایل‌(های) پیوست شده بندانگشتی (ها)
   

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۳۰-شهریور-۱۳۹۰, ۲۰:۲۲:۳۳
وب سایت ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #6
RE: اسیلوسکوپ با AVR
سلام.

من هنوز برنامه رو نخوندم ، اما مي خونم ...
فركانس رو چطور مي خواي اندازه بگيري ؟ مي خواي به صورت عدد نشون داده بشه ؟
براي اينكار مي توني از timer استفاده كني يا از يه تابع استفاده كني ( اسمش يادم نيست !! )
كنترل دامنه مي خواي به چه صورت باشه ؟ منظورت stretch كردن هست يا pan كردن ؟
براي pan اگر مدام در حال نمونه گيري هست ، كه بايد يه مقدار DC رو باهاش جمع كني (با مدار جمع كننده ي اپ امپ ) ،
اما اگر بعد از نمونه گيري ذخيره مي شه و ديگه نمونه گيري نمي كنه ، با استفاده از دستورات lcd فكر مي كنم بشه ...

براي حالت DC/AC هم ( همونطور كه خودت مي دوني ) از يك خازن متناسب با فركانس بايد استفاده كني ، كه اگر در مدار باشه ، مي شه AC و اگر نباشه ، مي شه DC ...

موفق باشي.
يا علي.


۳۱-شهریور-۱۳۹۰, ۱۵:۵۳:۰۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : h0x00i, رسول
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #7
RE: اسیلوسکوپ با AVR
برای اندازه گیری فرکانس ۲ راه داری یکی شمردن تعداد پالس ها توی یک زمان مشخص مثلا یک دهم ثانیه و یکی هم اندازه گیری زمان بین ۲ عبور از یک نقطه مشخص اونم مثلا بالا رونده
روش اول توی فرکانس های بالا و روش دوم توی فرکانس های پایین جواب می ده
از روی زمانه نمونه برداری م یتونه روش رو انتخاب کنی
برای هر دو روش باید عبور از اون نقطه رو تشخیص بدی که یه if می خواد
در کل هر دوروش برای شکل موج های پیچیده جواب نمی ده
یه روش دیگه که هست ۲ تا خط روی صفحه نشون می دن که کار بر می برتشون روی ابتدا و انتهای شکل موج دیگه کاری به شکل موج ندارن از اون ۲ تا خط و زمان نمونه گیری فرکانش رو حساب می کنن

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۵-مهر-۱۳۹۰, ۱۲:۴۸:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : sharin, h0x00i, رسول
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #8
RE: اسیلوسکوپ با AVR
مرسی آقا هادی

فکر کنم روش اخر خوب باشه اینجوری جالب تر هم میشه ......
فقط باید این کار کنم دیگه :

دوتا خط تعریف می کنم که روی محور X حر کت میکنه بعد از مکان یابی دقیق ..وقتی اون ردیف پیکسل 1 شود تایمر شروع به کار میکنه و تازمانی که به انتهایی برسه میشماره و 1 تقسیم بر این زمان میشه فر کانس ...

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۰۶-مهر-۱۳۹۰, ۰۰:۰۲:۵۲
وب سایت ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #9
RE: اسیلوسکوپ با AVR
نه دیگه تایمر نمی خواد
شما سرعت نمونه برداری رو می دونی چون خودت تنظیم کردی مثلا هر نمونه (پیکسل) توی یک میلی ثانیه گرفته می شه دو تا خط رو هم که خودمون کشیدیم مثلا یکی روی پیکسل ۲۵ اون یکی روی ۷۵ یعنی ۵۰ پیکسل بین ۲ خط فاصله هست که می شه ۵۰ میلی ثانیه پس فرکانش می شه ۱/۵۰ کیلو

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۸-مهر-۱۳۹۰, ۱۳:۱۷:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : رسول, h0x00i
DELBAGTE آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #10
RE: اسیلوسکوپ با AVR
سلام میتونی فایل پروتئوس این برنامه رو برای بفرستی .شدیدا لازم دارم

اینم ایمیلم
abasihamid40@gmail.com
(آخرین ویرایش در این ارسال: ۰۷-تير-۱۳۹۱, ۱۵:۵۱:۲۷، توسط DELBAGTE.)
۰۷-تير-۱۳۹۱, ۱۵:۵۰:۴۴
ارسال‌ها
پاسخ
h0x00i آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 959
موضوع‌ها: 109
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 2866
( 2450 تشکر در 949 ارسال )
ارسال: #11
RE: اسیلوسکوپ با AVR
در پست شماره 4 وجود دارد

:)

دوستان الکترونیکی پیشنهاد می کنم حتما برن python یاد بگیرن ...
پروژه ، مقاله ،... 
۰۷-تير-۱۳۹۱, ۱۷:۳۶:۴۰
وب سایت ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS