دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 3 , از مجموع 3

موضوع: با کامپيوترمان اسکوپ بسازيم

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    همکار تالار برق
    رشته تحصیلی
    برق صنعتی
    نوشته ها
    199
    ارسال تشکر
    66
    دریافت تشکر: 327
    قدرت امتیاز دهی
    30
    Array

    smilee1 با کامپيوترمان اسکوپ بسازيم

    شايد شما هم از اون دسته افرادي هستيد ، که مايلند يک مدار اسيلوسکوپ داشته باشند ، که قابليت اتصال و نمايش شکل موج ورودي را روي کامپيوتر داشته باشه . مداري که تصميم به توضيح در موردش رو دارم از طريق پورت پرينتر به کامپيوتر وصل ميشه . نرم‌افزار اين اسيلوسکوپ به زبان C هست و در محيط Turbo C نوشته شده.
    توضيح مدار
    سيگنال ورودي به يک يکسوساز تمام موج شامل op-amp هاي A1,A2 و يک مدار آشکار کننده عبور از صفر(Zero Crossing detector)که توسط LM3914 ساخته شده اعمال ميگردد. در نيم سيکل‌هاي مثبت D3 روشن و D4 خاموش است. در نتيجه op-amp هاي A1,A2 بصورت معکوس کننده ولتاژ عمل مي‌نمايند و با توجه به اينکه
    R2=R3=R4=R5=R6=R=330Ω
    مقدار ضريب تقويت اين دو op-amp يک است. لذا خروجي op-amp ، A2 (پين 7 آي سي) برابر با ولتاژ ورودي (Vi) است. در نيم سيکل منفي D3 خاموش و D4 روشن است. لذا بازدن يک KCL در پايه 2 ، op-amp ، A1 با فرض اينکه ولتاژ اين پايه را V بناميم خواهيم داشت :
    Vi/R + V/(2R) + V/R = 0
    V = -(2/3)Vi
    و در نهايت ولتاژ خروجي (Vo) در پايه 7 op-amp ، A2 از رابطه زير بدست مي آيد :
    Vo = ( 1 + R/2R ) V = ( 1 + R/2R ) (-2Vi/3) = -Vi
    پس در نيم سيکل‌هاي منفي سيگنال خروجي مثبت خواهد بود. آشکار کننده عبور از صفر جهت مشخص کردن اينکه سيکل مثبت يا منفي است طراحي شده. اگر اين قسمت درست عمل نکند باعث عدم نمايش صحيح سيگنال ورودي ، بر روي کامپيوتر خواهد شد. مدار آشکار ساز عبور از صفر وجود نيم سيکل منفي را با يک کردن پين 15 کانکتور پورت پرينتر به PC اطلاع ميدهد.در واقع مدار آشکار ساز عبور از صفر از طريق بيت D3 پورت وضعيت (379Hex) با کامپيوتر در ارتباط است .
    خروجی یکسوساز تمام موج به ورودی مدار نمونه گیر (Sample and Hold) شامل A3,A4,IC6,T1 و خازن C3 اعمال می‌شود.این مدار از سیگنال ورودی در زمان های معین نمونه برداری کرده و جهت تبدیل به فرمت دیجیتال در اختیار ADC قرار میدهد.
    زمانیکه بیس ترانزیستور از طریق پین 1 (بیت D0 از پورت 37A ) کانکتور پورت پرینتر صفر شود ، هدایت ترانزیستور قطع شده و ولتاژ کلکتور آن بالا میرود. بالا رفتن ولتاژ کلکتور ترانزیستور T1 باعث بسته شدن کلید داخل IC6 میشود. در نتیجه سیگنال آنالوگ ورودی به خازن اعمال شده و آنرا به اندازه سطح ولتاژ سیگنال شارژ میکند.
    هنگامیکه کلید مجددا باز شد توسط اعمال سطح ولتاز منطقی یک ، از پین 1 پورت پرینتر به بیس ترانزیستور T1 ، ولتاژ ذخیره شده در خازن از طریق بافر (A1) به پین 6 آی سی ADC0804 جهت تبدیل به فرمت دیجیتال داده میشود. هرچه تعداد نمونه‌های گرفته شده از شکل سیگنال ورودی بیشتر باشد ، شکل موج بدست آمده دقیقتر خواهد بود.
    ADC0804 دارای یک مدار تولید کننده پالس ساعت داخلی است ، واز طریق قطعات بیرونی که به آن متصل میشوند مقدار آن قابل تعیین است. با توجه به مقادیر R1=10k و C4=150pf زمان تبدیل مقدار آنالوگ به دیجیتال تقریبا 100 میکرو ثانیه است.
    از آنجایی که از طریق پورت پرینتر فقط می‌توان در هر لحظه 4 بیت اطلاعات را خواند. لذا با استفاده از آی سی 74244 که بصورت مالتی پلکسر 2 به 1 هشت بیتی استفاده شده این مشکل مرتفع شده است.
    برنامه اسیلوسکوپ

    من برای شما سورس برنامه و فایل اجرائی بهمراه فایل EGAVGA.BGI را درون یک فایل زیپ قرار دادم . برای دانلود این فایل که حجم آن 38.7 کیلوبایت هستاینجا کلیک کنید.
    دقت کنید که فایل اجرایی بایستی همراه با فایل EGAVGA.BGI در یک مسیر قرار داشته باشند . در غیر اینصورت برنامه اجرا نخواهد شد.
    /* PROGRAM FOR PC OSCILLOSCOPE */
    /*by M.M.VIJAI ANAND B.E (E.E.E) C.I.T */


    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define data 0x0378
    #define stat 0x0379
    #define cont 0x037


    void graphics(int[],int[]); //FUNCTION TO DISPLAY GRAPH AND WAVEFORM
    void settings(); //FUNCTION TO CHANGE THE SETTINGS(TIME AND VOLTAGE)
    long int samp=7000; //PLEASE CHECK THESE VALUES WHEN CONVERSION IS
    // NOT PROPER(+-3000)


    float scale=1;
    float times=1;
    char again='a';
    int number=800;
    void main()
    {
    int i,j,k,a[1700],b[1700],c[1700],e[1700]; //This value 1700 is given when we want to compress the waveform
    //done when we compress the time scale
    long int b1;
    clrscr();
    settings();
    while(again=='a')
    {
    for(i=0;i
    {
    outportb(cont,0x05^0x0b);
    outportb(cont,0x04^0x0b);
    e[i]=(inportb(stat)^0x80)&0x08;
    for(b1=0;b1<=samp;b1++) //sampling time is approximately 50 µsec
    {}
    outportb(cont,0x05^0x0b);
    outportb(cont,0x01^0x0b);
    outportb(cont,0x05^0x0b);
    while((inportb(cont)&0x08)==0x00) //converstion time is approximately 100 µsec
    {}
    outportb(data,0xf0);
    a[i]=(inportb(stat)^0x80)&0xf0;
    outportb(data,0x01);
    b[i]=(inportb(stat)^0x80)&0xf0;
    outportb(data,0xff);
    }
    for(i=0;i
    {
    a[i]=a[i]>>4;
    c[i]=a[i]+b[i];
    c[i]=c[i]*0.0196*45/scale;
    }
    graphics(c,e);
    }
    }
    void graphics(int a1[],int e1[])
    {
    int gd=DETECT,gm,max,may,a,b,c,im,error,get=5;
    char str[10],*st="-",d;
    clrscr();
    initgraph(&gd,&gm,""); //use default bgi path
    error=graphresult();
    if(error != grOk)
    {
    printf("Graphics error %s ",grapherrormsg(error));
    //reports error when
    //graphics is not set
    printf(" -----------------------------------");
    printf(" --- ************************* ---");
    printf(" -----------------------------------");
    printf(" PRESS ANY KEY TO EXIT");
    getch();
    exit(1);
    }
    setbkcolor(LIGHTCYAN);
    setcolor(MAGENTA);
    settextstyle(2,0,5);
    max=getmaxx();
    may=getmaxy();
    may=may-20;
    outtextxy(0,may,"OSCILLOSCOPE [http://www.HLachini.com]");
    settextstyle(0,0,1);
    setcolor(BLUE);
    outtextxy(max-200,may+2,"press 'a' for next sample");
    setcolor(BROWN);
    outtextxy(max-200,may+10,"press any key to exit");
    setcolor(GREEN);
    settextstyle(0,0,0);
    for(a=0;a<=may;a+=get)
    {line(0,a,800,a);
    }
    for(a=0;a<=max;a+=get)
    {
    line(a,0,a,may);
    }
    setcolor(BROWN);
    setlinestyle(0,3,0);
    line(max/2,0,max/2,may);
    line(0,may/2,max,may/2);
    setcolor(RED);
    for(a=0,c=0;a<=max;a+=50,c++)
    {
    putpixel(a,may/2,BLUE);
    itoa((a-c*30)*times/2,str,10);
    outtextxy(a+3,may/2+3,str);
    }
    for(b=(may/2)-45,c=1;b>=0;b-=45,c++)
    {
    itoa((c*scale),str,10);
    putpixel((max/2),b,BLUE);
    outtextxy((max/2)+3,b+3,str);
    }
    for(b=(may/2)+45,c=1;b<=800;b+=45,c++)
    {
    itoa((c*scale),str,10);
    strcat(st,str);
    putpixel((max/2),b,BLUE);
    outtextxy((max/2)+2,b+2,st);
    strcpy(st,"-");
    }
    setcolor(MAGENTA);
    outtextxy(max-80,may/2+30,"time(msec)");
    settextstyle(0,1,0);
    outtextxy((max/2)-10,0,"volt(s)");
    setlinestyle(0,0,0);
    setcolor(RED);
    moveto(0,may/2);
    for(b=0,c=0;b<=number;c+=1, b++)
    {
    if(e1[b]!=0x08)
    {
    lineto(c*times,((may/2)-a1[b]));
    }
    else
    {
    lineto(c*times,((may/2)+a1[b]));
    }}
    again = getch();
    closegraph();
    restorecrtmode();
    }
    void settings()
    {
    int gd=DETECT,gm,error,max,may,b;
    char c,d,e[2],m,*n;
    times=1;
    initgraph(&gd,&gm,""); //default bgi directory path
    error=graphresult();
    if(error != grOk)
    {
    printf("Graphics error %s ",grapherrormsg(error));
    printf(" -----------------------------------");
    printf(" --- http://www.HLachini.com ---");
    printf(" --- E-mail: eLachini@Gmail.com ---");
    printf(" --- ************************* ---");
    printf(" --- Mobile:+98 912 381 2060 ---");
    printf(" --- Hossein Lachini ---");
    printf(" -----------------------------------");
    printf(" PRESS ANY KEY TO EXIT");
    getch();
    exit(1);
    }
    max=getmaxx();
    setbkcolor(LIGHTBLUE);
    settextstyle(1,0,0);
    setcolor(BROWN);
    outtextxy(max/2-90,10,"www.HLachini.com");
    outtextxy(max/2-90,20,"Hossein Lachini");
    outtextxy(max/2-120,30,"E-mail : eLachini@Gmail.com");
    outtextxy(max/2-120,40,"Mobile : +98 912 381 2060");
    outtextxy(max/2-60,50,"SETTINGS");
    line(0,60,800,60);
    setcolor(MAGENTA);
    settextstyle(1,0,1);
    outtextxy((max/4)-70,80,"Voltage Scale");
    settextstyle(0,0,0);
    setcolor(BROWN);
    outtextxy(10,120,"DEFAULT :");
    outtextxy(10,130," 1 unit = 1 volt");
    setcolor(RED);
    outtextxy(10,170,"TYPE 'C' TO CHANGE AND 'D' TO DEFAULT");
    c=getch();
    if(c=='c')
    {
    outtextxy(10,200,"TYPE 1 for 1 unit = 2 volt");
    outtextxy(10,240,"TYPE 2 for 1 unit = 4 volt");
    outtextxy(10,300,"TYPE 3 for user defined");
    switch(getch())
    {
    case '1' :
    { scale=2;
    break;
    }
    case '2' :
    {scale = 4;
    break;
    }
    case '3':
    {
    outtextxy(10,340,"TYPE VALUES FROM 1 TO 9 (minimize) or m to (magnify)");
    d=getch();
    if(d=='m')
    {
    outtextxy(10,360,"TYPE a (1 unit = 0.5 volt) or b (1 unit = 0.25 volt)");
    switch(getch())
    {
    case 'a':
    {
    scale=0.5;
    break;
    }
    case 'b':
    {
    scale=0.25;
    break;
    }
    }
    }
    else
    { e[0]='0';
    e[1]= '0';
    e[2]=d;
    scale=atoi(e);
    break;
    }
    }
    }
    }
    setcolor(BROWN);
    outtextxy(10,380,"TYPE C TO CHANGE TIME SETTINGS");
    m=getch();
    if( m=='c')
    {
    cleardevice();
    outtextxy(10,20,"X AXIS 1 unit= 10msec CHANGE TO x(10msec)");
    outtextxy(10,40,"TYPE 'a' IF x IS (2 to 9) ,'b' IF x IS (10 to 99) AND 'c' IF x IS (.5 TO .9)");
    switch(getch())
    {
    case 'a':
    outtextxy(10,60,"x value is ....");
    n[0]=getch();
    times=atoi(n);
    itoa(times,n,10);
    outtextxy(10,70,n);
    break;
    case 'b':
    outtextxy(10,60,"x value is ....");
    n[0]=getch();
    n[1]=getch();
    times=atoi(n);
    itoa(times,n,10);
    outtextxy(10,70,n);
    break;
    case 'c':
    outtextxy(10,60,"x value is...");
    getch();
    n[0]=getch();
    times=atoi(n)*0.1;
    outtextxy(10,70,"scale decremented");
    break;
    }
    number=800;
    if(times<1)
    {number=number/times;
    }
    getch();
    }
    closegraph();
    restorecrtmode();
    }
    نرم‌افزاری جهت دانلود.که با نصب آن در محیط ویندوز صاحب یک اسیلوسکوپ تمام عیار خواهید شد . این اسیلوسکوپ جهت دریافت سیگنال از ورودی کارت صدا استفاده میکند. جهت دانلود این نرم‌افزار اینجا کلیک کنید .
    ict.maker.mihanblog.com
    ویرایش توسط BEN HOR : 23rd December 2010 در ساعت 02:57 PM



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

  2. 2 کاربر از پست مفید BEN HOR سپاس کرده اند .


  3. #2
    کاربر جدید
    رشته تحصیلی
    کامپیوتر
    نوشته ها
    1
    ارسال تشکر
    0
    دریافت تشکر: 0
    قدرت امتیاز دهی
    0
    Array

    پیش فرض پاسخ : با کامپيوترمان اسکوپ بسازيم

    سلام،
    لینکها کار نمی کنند... و شماتیک مدار هم معلوم نیست. اگه میشه اصلاحش کنید.
    با تشکر

  4. #3
    کاربر جدید
    رشته تحصیلی
    مهندسی کامپیوتر - نرم افزار
    نوشته ها
    104
    ارسال تشکر
    486
    دریافت تشکر: 220
    قدرت امتیاز دهی
    26
    Array

    پیش فرض پاسخ : با کامپيوترمان اسکوپ بسازيم

    خیلی جالب بود ممنون

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. مقاله: چراحجاب باید داشت ؟
    توسط Admin در انجمن مقالات مذهبی
    پاسخ ها: 22
    آخرين نوشته: 9th November 2012, 03:15 PM
  2. مقاله: كاوشي در چگونگي ورود برق به ايران
    توسط BEN HOR در انجمن مقالات برق
    پاسخ ها: 0
    آخرين نوشته: 14th December 2010, 11:07 AM
  3. مقاله: حفاظت و رله : حفاظت مولفه منفي ژنراتور
    توسط BEN HOR در انجمن مقالات برق
    پاسخ ها: 0
    آخرين نوشته: 13th December 2010, 06:21 PM
  4. مقاله: خليج فارس در بازي قدرت
    توسط باستان شناس در انجمن خلیج همیشه پارسی
    پاسخ ها: 0
    آخرين نوشته: 4th October 2010, 10:52 PM
  5. (ایمنی و حفاظت کار در حین اجرا)
    توسط nika6749 در انجمن سایر موضوعات مهندسی عمران
    پاسخ ها: 0
    آخرين نوشته: 23rd September 2010, 08:12 AM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •