luni, 25 ianuarie 2010

Mes

Material auxiliar Masuratori electronice si senzori
M1si in specialM2 si Senzori Senzori

duminică, 17 ianuarie 2010

Problema memorii

Memorii, Problema 2. from Costan Alex

Probleme CAN, Bistabili







sâmbătă, 16 ianuarie 2010

Problema Microcontroler
P2

P1
Problema Microcontroler

joi, 14 ianuarie 2010

GridLayout

//Desenare Grid(se poate folosi la sah sau la Snake)
//Pentru punere de labels in grid

void stareInitiala()
{
panel.setLayout(new GridLayout(copieModel.nrLinii,copieModel.nrColoane,1,1));
label=new JLabel[copieModel.nrLinii][copieModel.nrColoane];
for(int i=0;i<(copieModel.nrLinii);i++)
for(int j=0;j<(copieModel.nrColoane);j++)
{
label[i][j]=new JLabel();
panel.add(label[i][j]);
label[i][j].setOpaque(true);
}
}

//Pentru modificare panou de joc
//Aceasta se reapeleaza pentru redesenare


void desenare()
{
for(int i=0;i<(copieModel.nrLinii);i++)
for(int j=0;j<(copieModel.nrColoane);j++)
{
if(copieModel.harta[i][j]==-1)
{

label[i][j].setBackground(Color.darkGray);
}
if(copieModel.harta[i][j]>0)
{
label[i][j].setBackground(Color.green);
}
if(copieModel.harta[i][j]==0)
{
label[i][j].setBackground(Color.yellow);
}


}
frame.getContentPane().add(panel,BorderLayout.CENTER);
}

Tabla de sah cu Graphics

//Desenare tabla de sah

public void paintComponent(Graphics g)
{
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)
{
if(copieModel.matrice[i][j]==0)
{
g.setColor(Color.lightGray);
g.fillRect(i*20,j*20,20,20);
}
if(copieModel.matrice[i][j]==1)
{
g.setColor(Color.darkGray);
g.fillRect(i*20,j*20,20,20);
}

//pentru redesenare componenta.repaint(), unde componenta este este o instanta a clasei care extinde JPanel: public class Vizualizare extends JPanel

Transformare continut fisier in matrice

//Transformare din continut fisier transmis k string in matrice

void generareMatrice()
{
String[] result=continutFisier.split("\n");// .split(criteriu) are rolul de a //imparti un string in mai multe "bucati" folosind un anumit criteriu; in cazul de //fata se
//foloseste ca si criteriu sfarsitul de linie
int linia=0;
for(String token:result)//se va parcurge ficare linie, am folosit metoda //split fiin o alternativa mult mai eleganta decat cea folosita la geneareMatrice()
{
for(int coloana=0;coloana<(nr_coloane);coloana++)
{

matrice[linia][coloana]=token.charAt(coloana);
}
}
}

Java - Citire din fisier

//Java - Citire din fisier

import java.io.*;
public class ReadTextFile
{
String continutFisier=new String("");
/**
* Realizeaza citirea din fisier
* @param harta: Un sir trimis ca si parametru constructorului Model
* @return continutFisier: Un sir ce reprezinta continutul fisierului
*/
public String readFile(String harta)
{
try
{
int i;
//buffeul se foloseste pentru a mari viteza de citire
//getClass si getResource se folosesc pentru a gasi fisierul in arhiva JAR
BufferedInputStream buf = new BufferedInputStream(getClass().getResourceAsStream(harta));
try{
while((i=buf.read())!=-1)
{
//se citesc biti care sunt transformati in caracterele corespunzatoare codului ASCII si apoi in String
continutFisier+=((char)(i));
}
}
finally
{
buf.close();
//se inchide fluxul
}
}
catch(Exception e)
{
}

return continutFisier;
}

}

luni, 11 ianuarie 2010

9. Poarta de tranmisie
Se cunoaste faptul ca un tranzistor NMOS(Mn) este deschis pentru o intrare pe Grila de "1" si inchis pentru "0". Un tranzistor PMOS functioneaza invers, este deschis pe "0" si inchis pe "1".

Daca avem A pe "1", atunci not(A) va fi pe "0", deci atat Mn cat si Mp vor fi deschise si pe iesire avem intrarea


Daca pe A avem "0", atunci pe not(A) vom avea "1", deci ambele vor fi blocate, si pe iesire vom avea "0"


OBSTranzistoarele MOS se pot folosi in genereal cu alimntarea D-S sau S-D (vezi )
<>CMOS

Pe iesire se va pune o rezistenta mare care consuma foarte putin curent pentru iesirea pe "1", dar la "0", iesirea este adusa cat mai apropape de 0V.

sâmbătă, 9 ianuarie 2010

8.Inversorul CMOS

Mp avand tensiune de prag negativa este deschis la "0" (pt "1" este blocat). Mn are tensiune de prag ~1.5V este deschis la “1”.(vezi: CMOS si CMOS
La "1" este este deschis tranzistorul Mn si Mp inchis, astefl la iesire vom avea potentialul Vss(~0V).
La "0" este deschis tranzistorul Mp si Mn blocat, deci la iesire vom avea potentialul Vdd("1").
Obs Pentru a se identifica mai usor elemntele tranzistorului D G S B o observatie ar fi ca de cele mai multe ori S si B sunt legate impreuna si G este perpendicular pe linia lor
Aplicatii tranzistoare
7 Inversorul NMOS static, Poarta SI-NU, Pentru SAU-NU

Daca pe intrare se introduce o valoare de “1” logic atunci M1 va fi deschis si curentul se va scurge in GND. In acelasi timp si M2 este deschis fiind datorita potentialului Vgg. Astfel Vdd se scurge prin M1 si M2 spre GND. Atat la iesire cat si pe GND avem acelasi potential si astfel diferenta intrece cele 2 puncte este ~0.


In cazul “0”, tranzistorul M1 este blocat(are tensiune de prag ~1.5V) si astfel potentialul de la Vdd nu se va scurge in GND. Diferenta intre cele 2 corespunde pentru “1”logic.


Poarta SI-NU functioneaza aproximativ la fel. Daca avem cel putin o valoare de “0” atunci cel putin unul din tranzistoarele M1, M2 va fi blocat si Vdd nu va ajunge pana la GND. Diferenta de potential Vout-GND va fi “1”. Pentru A=B=”1” M1 si M2 deschise si potentialul GND va fi egal cu cel din Vout


Pentru SAU-NU se rezolva aproximativ la fel. Daca A=B=”0” vom avea “1” si daca cel putin una din intrari va fi “0” vom avea “1” pe iesire.
Obs. Parametrii si dimensiunile pentru circuite difera deoarece M2(in toate cele 3 cazuri) are rolul unei rezistente(s.n. activa deoarece se poate modifica prin Vgg)

6.TTL de putere redusa

Singura modificare fata de TTL standard este data de folosirea unor rezistente de valori ridicate care au rolul de a reduce consumul de curent. Totusi aceata modificare duce la cresterea timpilor de comutare.
TTL rapid

Se aseamana cu TTL standard, grupul Q4-Q5 avand rolul dr grabire a tranzitiilor

5.Poarta fundamentala TTL
Daca pe A sau B avem “0”(idem si daca ambele sunt pe “0”), Q1 va fi deschiz(vezi diferentele de potential Vb,Ve,Vc), tranzistorul Q2 va fi blocat la fel si Q4. Q3 va fi in conductie si astfel la iesire vom avea un potential ridicat “1”
Pentru “1” pe ambele intrati Q1 va fin in regiune inversa Q2 si Q4 vor fi in conductie, Q3 va fi blocat datorita potebtialului scazut pe baza. La iesire vom avea o tensiune foarte mica ~0.7V
4.Inversor cu tranzistor bipolar

Ideea acestui montaj este urmatoarea: daca avem o valoare de “1” logic atunci la iesire vom avea “0” deoarece baza este un potential mai mic decat pe colector dar mai mare decat pe emitor. Astfel curentul ajunge in emitor(tranzistor deschis) deci in GND si pe Vout care este raportat la GND vom avea 0(Atentie masurarea se face de fiecare data intre Vout si GND, in acest caz se afla la celasi potential deci diferenta lor(Uab=Vb-Va) va fi ~0). Daca la intrare avem “0” atunci tranzistorul este blocat, pe GND avem ~0(chiar mai putin vezi sursa Eb) si astefel diferenta de potential ne asigura nivelul “1”(este generat de catre sursa Ec).
Condensatoarul are rol de accelerare inacarcandu-se foarte rapid si apoi descarcandu-se pe R.
3.Redresor cu filtru, Redresor cu dioda Zenner, Stabilizator cu reactie fara amplificator de reactie(cu trenzistor)
Redresor cu filtru

Condensatorul a fost adaugat pentru a se incarca pe alternata pozitiva si se descarca in circuit cand tensiunea scade sub tensiunea de incarcare( pe alternanta negativa si pe coborarea de la amplitudinea maxima)

Redresor cu dioda Zenner

Dioda Zenner la fel ca diodele obisnuite permit trecerea curentului daca sunt polarizate direct. Insa daca la diodele obisnuite prin polarizare inversa se blocheaza la Zenner se cauta tocmai acel curent invers de polarizare care duce la o strapungere a diodei. De accea Zenner se pune pe iesire si se polarizeaza invers pentru ca in zona Zenner avem o caracteristica a curentului-tensiune foarte stabila.
(Atentie la montarea diodei Zenner, vezi si efectul de avalansa ce apare la Zenner pe polarizare inversa)

Stabilizator cu reactie fara amplificator de reactie(cu trenzistor)

Tranzistorul se foloseste pentru functia lui de intrerupator comandat, se foloseste in functionare normala(reg activa normala/saturatie) care se obtine prin urmatoarele relatii Vcb>Vbe(V potential) care ne asigura o diferenta de potential Vce. In cazul de fata acest potential este dat de variatia potentialului de la baza tranzistorului, astfel: daca Vout(= Vzenner=Vrl) creste atunci potentialul la baza va creste ceea ce va duce ca Vce sa scada; daca va creste este invers... (vezi definirea zonei normale: Ve~Vb+6)
2.Redresor mono si dubla alternanta

In cazul redresorului mono alternanta se cunoaste faptul ca dioda se deschide la o tensiune prag de 0.6-0.7V in cazul polarizarii directe + la anod si – la catod. In cazul semnalului sinusoidal dioda este polarizata direct pe alternanta pozitiva si astfel la iesire(caderea de tensiune pe R) avem o tensiune comparabila cu cea de intrare. In cazul alternatei negative dioda este polarizata invers si este blocata, tensiunea fiind aproximativ 0.

Pentru redresor dubla alternanta se foloseste un grup de diode numit si punte redresoare. Pentru alternanta pozitiva sunt deschise diodele D1 si D3 si blocate restul. In cazul alternantei negative sunt deschise dodele D2 si D4. (polarizarea diodelor se face in acest caz prin aplicarea la anod a unei tensiuni aprox 0 si la catod a uneia negativa, ceea ce scade tensiunea de prag permitand deschiderea ei)
1. a)RC trece-sus si b)RC trece-jos

Tensiunea generata de sursa este data de suma caderilor de tensiune pe C si pe R. In cazul a) tensiunea de iesire este data de caderea pe R, in cazul b) de caderea pe condensator.
In ambele cazuri folosind definitia reactantei capacitive si a legii lui Ohm se observa ca o frecventa mare duce la o tensiune pe C mica, si pentru frecvente mici o tensiune mare. Sa nu uitam ca tensiunea de intrare este suma celor 2 caderi, astefel putem afla caderea de tensiune pe R; la frecvente mici aceasta este mare iar la frecvente mari este mica.(F frecventa Uc,Ur caderi de tensiune)

marți, 5 ianuarie 2010

Hello,
va prezint model de citire din fisier a unei matrici
utilizand acest model de citire a unui fisier puteti sa creeati mai departe si o arhiva jar

fisierul contine pe prima linie un sir de numere,iar pe urmatoarele lini contine o matrice de int.citirea din fisier se face linie cu linie;fiecare linie se citeste ca un string iar apoi din string se extrag numai cifrele eliminand spatiile albe.

public void citireMat(String s)
{
/*File file = new File(s);
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream cit = null;*/
String linie; //string care imi retine o linie
int contor=-1; //contor care imi contorizeaza cate linii am citit
int cont1=0;

String aux1;
int j=0;
try
{

InputStream in =getClass().getResourceAsStream(s);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
// BufferedInputStream br = new BufferedInputStream(getClass().getResourceAsStream(s));
// dis.available() returns 0 if the file does not have more lines.

while ((strLine = br.readLine()) != null)
{
contor=contor+1;; //incrementez contorul la fiecare citire
//linie=cit.readLine();
strLine=strLine.trim();
StringTokenizer st = new StringTokenizer(strLine, " ");
j=0;
if (contor==0){
String aux=st.nextToken();
n=Integer.parseInt(aux);
//citim de pe prima linie a fisierului nr de cutii,pozitii finale ale cutiilor,pozitia initiala a juc si timpul pt stagiu
for(int k=0;k<(n);k++)
{
aux=st.nextToken();
x[k]=Integer.parseInt(aux);
}
for(int k=0;k<(n);k++)
{
aux=st.nextToken();
y[k]=Integer.parseInt(aux);
}
aux=st.nextToken();
jx=Integer.parseInt(aux);
aux=st.nextToken();
jy=Integer.parseInt(aux);
aux=st.nextToken();
timp=Integer.parseInt(aux);



}//final if
else{
while(st.hasMoreTokens())
{
aux1=st.nextToken();
a[cont1][j]=Integer.parseInt(aux1);
j++;
}
cont1++;
}
}
in.close();


} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

by Coatan Alexadru

JAVA citire fisier


import java.io.*;

public class ReadTextFile
{
String continutFisier=new String("");
/**
* Realizeaza citirea din fisier
* @param harta: Un sir trimis ca si parametru constructorului Model
* @return continutFisier: Un sir ce reprezinta continutul fisierului
*/
public String readFile(String harta)
{
try
{
int i;
//buffeul se foloseste pentru a mari viteza de citire
//getClass si getResource se folosesc pentru a gasi fisierul in arhiva JAR
BufferedInputStream buf = new BufferedInputStream(getClass().getResourceAsStream(harta));
try{
while((i=buf.read())!=-1)
{
continutFisier+=((char)(i));
}
}
finally
{
buf.close();
}
}
catch(Exception e)
{
}

return continutFisier;
}

}



//Parcurgere fiecare linie

String[] result=continutFisier.split("\n");// .split(criteriu) are rolul de a imparti un string in mai multe "bucati" folosind un anumit criteriu; in cazul de fata se
//foloseste ca si criteriu sfarsitul de linie
int linia=0;
for(String token:result)//se va parcurge ficare linie, am folosit metoda split fiind o alternativa mult mai eleganta decat cea folosita la geneareMatrice()
{
for(int coloana=0;coloana<(nr_coloane;coloana++))
{

vineri, 1 ianuarie 2010

Java - Includere imagine, o varianta utila pentru JAR

//multumiri http://www.devx.com/tips/Tip/5697, putin modificat, inca o data multumiri

import java.awt.*;
import java.net.*;
import javax.swing.*;

public class ImportImageFromNet extends JFrame
{

Image img;
public ImportImageFromNet() throws Exception {
URL myurl = this.getClass().getResource("/robot.jpg");
Toolkit tk = this.getToolkit();
img = tk.getImage(myurl);
this.setVisible(true);
this.setSize(300,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} // public ResourceTest()

public void paint(Graphics g) {
g.drawImage(img, 0, 0, this);
} // public void paint()
public static void main(String[] args)throws Exception
{
ImportImageFromNet gui=new ImportImageFromNet();
gui.repaint();
}
}

// public class ResourceTest extends Frame
//O alta varianta de introducere a imagini este:

URL url = getClass().getResource("anImage.gif");
Image img = Toolkit.getDefaultToolkit().getImage(url);


http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter06/images.html

//voi incerca intr-o varianta viitoare sa incarc imagini si folosind o resursa http;)