Méréstechnika

Oszcilloszkóp PC-re

A kapcsolás segítségével a PC képernyőjére lehet varázsolni a bemenő jel hullámformáját. A jel kb 1 KHz frekvenciájú, maximum 5V nagyságú lehet.

A bemenő jel az LM324 műveleti erősítőre és az LM3914 IC-re egyszerre érkezik. A tényleges analóg-digitális konverziót az ADC0804 IC, a 74244 pedig a PC párhuzamos port illesztését végzi. A PC párhuzamos portja a következő címeken érhető el:

Printer
Data port
Status port
Control port
LPT1
0x0378
0x0379
0x037A
LPT2
0x0278
0x0279
0x027A
LPT3
0x03BC
0x03BD
0x03BE


A 4016 és LM324 IC-kel felépített mintavevő rész pedig a bejövő feszültséget tárolja a feldolgozásig.

A kapcsolás táplálása +9V stabil tápfeszültségről történik, a 7805 ebből még előállít +5V stabil feszültséget a digitális rész számára.

Itt látható egy egyszerű C nyelven megírt példaprogram, amely bemutatja az áramkör kezelését programból:

/* PROGRAM FOR PC OSCILLOSCOPE */
/*by M.M.VIJAI ANAND B.E (E.E.E) C.I.T */

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



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,"c: cgi"); //use default bgi path
error=graphresult();
if(error != grOk)
{
printf("Graphics error %s /n",grapherrormsg(error));
//reports error when
//graphics is not set

printf("PRESS ANY KEY TO EXIT");
getch();
exit(1);
}
setbkcolor(LIGHTCYAN);
setcolor(MAGENTA);
settextstyle(0,0,2);
max=getmaxx();
may=getmaxy();
may=may-20;
outtextxy(0,may,"OSCILLOSCOPE");
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,"c: cgi"); //default bgi directory path
error=graphresult();
if(error != grOk)
{
printf("Graphics error %s /n",grapherrormsg(error));
printf("PRESS ANY KEY TO EXIT");
getch();
exit(1);
}
max=getmaxx();
setbkcolor(LIGHTBLUE);
settextstyle(1,0,0);
setcolor(BROWN);
outtextxy(max/2-60,20,"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,120," 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();
}
Az írást küldte: Karvaly TamásEmail a szerzőnek

Legújabb írás:

Világítás, fényvezérlésLépcsőházi világítás automatika
2016. december 13. 10:11

További cikkek

2008. július 31. 10:34
2006. június 08. 13:41
2010. július 24. 11:04
2011. február 08. 14:05
2010. augusztus 28. 14:18
2005. augusztus 17. 13:47
2006. július 27. 09:10
2013. június 05. 20:01
2006. június 30. 11:15
2007. június 10. 21:00
2009. március 04. 11:34
2011. május 30. 10:23
2010. július 30. 15:13
2006. július 03. 14:33
2008. július 31. 11:06
2010. június 18. 22:09
2011. február 23. 15:47
2013. május 26. 07:26
2004. július 12. 23:40
2003. november 17. 11:10
2005. április 07. 09:22
2008. szeptember 27. 18:18
2011. október 05. 09:30
2007. november 04. 17:02
2010. április 19. 11:18
2005. december 02. 22:22
2008. február 28. 09:28
2012. április 12. 10:55
2009. december 15. 19:01
2008. január 21. 21:11
2006. január 23. 19:26
2003. május 10. 20:30
2002. október 20. 17:28
2005. március 02. 23:10
2008. június 24. 08:15
2009. szeptember 08. 07:40
2001. október 08. 23:46
2003. október 21. 23:00
2000. május 10. 11:00
2005. szeptember 02. 12:50
2006. június 01. 09:44

Vélemények

Legfrissebb hozzászólások

Erősítők, előerősítőkHangfrekvenciás erősítő TDA2030-al hídkapcsolásban
2017. január 20. 22:58:47
Erősítők, előerősítőkHangfrekvenciás erősítő TDA2030-al hídkapcsolásban
2017. január 20. 21:40:18
LED-es kapcsolásokRendőrlámpa 2 IC-vel 2.0
2017. január 20. 17:31:53
Erősítők, előerősítők14W-os erősítő TDA2030-al új nyák 2.
2017. január 19. 12:57:01
LED-es kapcsolásokSzétfutó futófény
2017. január 18. 23:42:08

Írd meg a véleményed a cikkel kapcsolatban!

bsselektronika.hu/index.php?w=Ahd2JRk9VT