صفحه اصلي | فهرست مقالات | مطالب جديد | خبرنامه | نقشه سايت | طراحي وب | نسخه جديد سايت | جستجو | نسخه جديد سايت | پرسش و پاسخ

صفحه اصلي | فهرست مقالات | مطالب جديد

 
بخش ویژه

هک رشد

تکنیک های توسعه و رشد سریع کسب و کار و استارتاپ ها


دسته ها

  • هک رشد هکر رشد استارتاپ
  • ایمنی صنعتی
  • شش سیگما
  • شبکه های هوشمند توزیع برق
  • فیزیک
  • انرژی های تجدیدپذیر (نو )
  • نرم افزار مطلب Matlab
  • مهندسی کامپیوتر
  • متفرقه
  • ماشین - اخبار
  • طراحی سایت و سئو
  • ماشین - معرفی شرکتها
  • ماشین - معرفی ماشين سازان
  • ماشین - معرفی ماشين آْلات
  • برق-دانش آموزان
  • برق-مهندسی پزشکی
  • برق-فناوری اطلاعات
  • برق-مخابرات
  • برق-کنترل
  • برق-قدرت
  • برق-اتوماسیون
  • برق-الکترونیک
  • برق-عمومی
  • برق - هوش مصنوعی
  • ارتباط با صنعت2
  • سايت هاي مرتبط
  • احمد زيني هكر رشد
  • هك رشد
  • فيلدباس و اتوماسيون
  • شبكه فيزيك هوپا
  • كارگاه هواشناسي
  • مهندسي برق
  • مجله در مورد سنسورها
  • www.control.com
  • temperatures.com
  • مجله سلامت و زيبايي

  • طراحي مدار و ساخت اسيلوسكوپ قابليت اتصال به كامپيوتر

    طراحي مدار و ساخت اسيلوسكوپ قابليت اتصال به كامپيوتر

    شاید شما هم از اون دسته افرادی هستید ، که مایلند یک مدار اسیلوسکوپ داشته باشند ، که قابلیت اتصال و نمایش شکل موج ورودی را روی کامپیوتر داشته باشه . مداری که تصمیم به توضیح در موردش رو دارم از طریق پورت پرینتر به کامپیوتر وصل میشه . نرم‌افزار این اسیلوسکوپ به زبان C هست و در محیط Turbo C نوشته شده.


    طراحي مدار و ساخت اسيلوسكوپ قابليت اتصال به كامپيوتر

    شايد شما هم از اون دسته افرادي هستيد ، كه مايلند يك مدار اسيلوسكوپ داشته باشند ، كه قابليت اتصال و نمايش شكل موج ورودي را روي كامپيوتر داشته باشه . مداري كه تصميم به توضيح در موردش رو دارم از طريق پورت پرينتر به كامپيوتر وصل ميشه . نرم‌افزار اين اسيلوسكوپ به زبان 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<dos.h>
    #include<time.h>
    #include<stdio.h>
    #include <graphics.h>
    #include<string.h>
    #include<stdlib.h>
    #include<conio.h>
    #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<number;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<number;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 \n",grapherrormsg(error));
    //reports error when
    //graphics is not set
    printf("\n -----------------------------------");
    printf("\n --- http://www.HLachini.com ---");
    printf("\n --- E-mail: eLachini@Gmail.com ---");
    printf("\n --- ************************* ---");
    printf("\n --- Mobile:+98 912 381 2060 ---");
    printf("\n --- Hossein Lachini ---");
    printf("\n -----------------------------------");
    printf("\n\nPRESS 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 \n",grapherrormsg(error));
    printf("\n -----------------------------------");
    printf("\n --- http://www.HLachini.com ---");
    printf("\n --- E-mail: eLachini@Gmail.com ---");
    printf("\n --- ************************* ---");
    printf("\n --- Mobile:+98 912 381 2060 ---");
    printf("\n --- Hossein Lachini ---");
    printf("\n -----------------------------------");
    printf("\n\nPRESS 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();
    }
     

    منبع :  http://www.hlachini.com


     

     

    منوي اصلي
  • صفحه اصلي
  • فهرست مقالات
  • مطالب جديد
  • خبرنامه
  • نقشه سايت
  • طراحي وب
  • نسخه جديد سايت
  • جستجو
  • نسخه جديد سايت
  • پرسش و پاسخ
  •  

    مطالب جديد
     

         
    Copyright © 2003 - 2017 by AutoIR iranresearch , All rights reserved. www.iranresearch.com www.iranresearch.ir www.autoir.ir Designed by Ahmad Zeini
    کلیه حقوق مادی و معنوی این سایت autoir.ir می باشد