bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online Pe HaiSaRadem.ro vei gasi bancuri, glume, imagini, video, fun, bancuri online, bancuri tari, imagini haioase, videoclipuri haioase, distractie online. Nu ne crede pe cuvant, intra pe HaiSaRadem.ro ca sa te convingi.

Cuprins Capitolul1 Capitolul2 Capitolul3 Capitolul4 Capitolul5 Bibliografie

 

CAPITOLUL 4 :         IMPLEMENTAREA  SISTEMULUI

Schema electrica

Tinand cont de configuratiile intrarilor si iesirilor celor doua circuite integrate, cat si caracteristicile tehnice date de producator in data sheet–ul fiecaruia, privind valorile marimilor electrice care intervin, schema electrica a placii de achizitie se poate deduce destul de usor.
S-a ales montajul cazul in care ADC-ul este conectat pentru a efectua conversie continua. 

          Schema electrica a placii de achizitie esta urmatoarea:

 

Pentru realizarea tensiunii de alimentare de 5V a circuitelor s-a folosit stabilizatorul de tensiune L7805. Deasemenea, pentru realizarea tensiunii de referinta Vref/2 s-a folosit divizorul de tensiune R1, R2 cu rezistenta variabila R3.


ADC-ul primeste comanda doar pentru start-conversie pe pinul  /WR din port folosind pinul din registrul CONTROL  Select PR.
Circuitul de multiplexare 74LS244 este comandat cu pinii /STROBE, respectiv /AUTOFEED si deasemenea din registrul CONTROL.
Pentru achizitie se folosesc primii 4 pinii ai registrului STATUS : ACK, / BUSY, PAP. OUT si  SELECT.
Se observa masele separate AGND si DGND. Masa analogica apare doar la tensiunea analogica de masurat si pinul 8. Intre cele doua mase trebuie sa existe o singura legatura, pentru evitarea buclelor de masa (ground loops) care conduc la nefunctionarea circuitelor.

Dupa cum am specificat in primul capitol sistemul de achizitie de date implica si realizarea softului care sa realizeze citirea in bucla a tensiunii aplicate placii de achizitie.

Programul

Scrierea de programe care sa comunice cu portul paralel din medii DOS sau chiar Win95/98 este destul de usor. Functii pentru scrierea/citirea registrilor portului paralel se fac prin utilizarea functiilor standard C outportb/inportb implementate in majoritatea compilatoarelor de C/C++. Aceste functii nu fac altceva decat sa translateze codul in functii din limbajul de asamblare in/out.
Un posibil program care citeste in permananta tensiunea la intrarea este urmatorul scris in C++ :

#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#define startconv 0x0C
#define readsup 0x02
#define readinf 0x01

void main(void)
{
 clrscr();
 int port,control,stare;                                                           
 unsigned char adcstatus,sup,inf,intr,valoare;
float tensiune;
 port=peek(0x40,0x08)                            --  /
if (port==0)                                                 /
   { printf("\n LP1 ocupat!!");                      /  
exit(1);                                             / -- se gaseste adesa portului
          }                                                         /    si se verifica daca portul este
  printf("%x",port);                                      /   disponibil
  stare=port+1;                                           /
control=port+2;                                   -- /

          while(!kbhit())                                              - -/ 
          {                                                                       /
  //      clrscr();                                                          / 
           outportb(control,startconv);                          /1
           outportb(control,readsup);                            /2
           sup=inportb(stare)&0xF0;                           /3
           sup=sup^0x80 ;                                            /4    -rutina pentru citirea continua
           printf("\n %x" ,sup);                                     /    tensiunii
           delay(1000);                                                 /
           outportb(control,readinf);                            /5
           inf=inportb(stare) >>4;                              /6
           inf=inf^0x08 ;                                              /7
           printf("\n %x ",inf) ;                                    / 
           delay(1000) ;                                               /
           valoare=(inf|sup);                                      /8
           printf("\n valoare=%x",valoare);              /
           delay(10);                                                   /
           tensiune=float(5*valoare)/256;          /9
           printf("\nV=%f",tensiune);                  /10
           delay(800);                                   ---    /

          }
}

Citirea celor 8 biti care contin codificarea valorii tensiunii se face in felul urmator: