Documente Academic
Documente Profesional
Documente Cultură
Formularea temei:
Sa se proiecteze un automat programabil care sa simuleze operatiile din cadrul celulei robotizare de
deformare la rece a unor repere de tabla. Pentru implementare se va folosi un microprocesor.
Aplicatia aleasa este prezentata in figura de mai jos:
Diagrama de stare:
Tabel stari
Diagrame KARNAUGH:
Q2’Q1’Q0’
Q2Q1 \ Q0I 00 01 11 10
00 000 100 x x
01 000 110 x x
11 111 000 000 000
10 000 010 x x
OUTPUT
Q2Q1 \ Q0I 00 01 11 10
00 0 0 x x
01 0 0 x x
11 0 0 1 0
10 0 0 x x
00 0 1 x x
01 0 1 x x
11 1 0 0 0
10 0 0 x x
Q1’ :
Q2Q1 \ Q0I 00 01 11 10
00 0 0 x x
01 0 1 x x
11 1 0 0 0
10 0 1 x x
Q0’ :
Q2Q1 \ Q0I 00 01 11 10
00 0 0 x x
01 0 0 x x
11 1 0 0 0
10 0 0 x x
00 0 0 x x
01 0 0 x x
11 0 0 1 0
10 0 0 x x
Out: Q0i
Schemă automat finit, utilizând bistabili – realizată în OrCAD.
De asemenea, pentru aceeasi aplicatie s-au simulat starile utilizant o placuta Arduino.
Schema instalației este următoarea:
1
5432
B1 B2
Instalația conține:
- 1x breadboard;
- 2x butoane;
- 5x LED-uri;
- 1x Arduino Uno;
- Cablu alimentare;
- Cabluri de conectică;
- 7x rezistoare
Modul de funcționare este următorul și va fi prezentat pe baza stărilor fiecărui
LED (1,2,3,4,5) și a apăsării butoanelor (B1, B2):
int push = 0;
int prevPush = 0;
int led = 0;
int nok = 0;
void setup()
{
pinMode(2, INPUT); //initializare pin 2 pentru citire buton B1
pinMode(8, INPUT); // initializare pin 8 pentru citire buton B2
pinMode(3, OUTPUT); // initializare pin 3 pentru scriere led L1
pinMode(4, OUTPUT); // initializare pin 4 pentru scriere led L2
pinMode(5, OUTPUT); // initializare pin 5 pentru scriere led L3
pinMode(6, OUTPUT); // initializare pin 6 pentru scriere led L4
pinMode(7, OUTPUT); // initializare pin 7 pentru scriere led L5
}
void loop()
{
digitalWrite(3, LOW); // led-ul 1 este stins
digitalWrite(4, LOW); // led-ul 2 este stins
digitalWrite(5, LOW); // led-ul 3 este stins
digitalWrite(6, LOW); // led-ul 4 este stins
digitalWrite(7, LOW); // led-ul 5 este stins
push = digitalRead(2); // condiția incepereii counter-ului este apasarea butonului B1
if (push != prevPush) {
prevPush = push;
if (push == 1) {
led++;
if (led == 7){
led = 1;
}
}
}
nok = digitalRead(8); // initializarea functionalitaiti butonului B2 intr-o variabila
if (nok == LOW){ // daca butonul B2 nu este apasat
switch (led) {
case 1:
digitalWrite(3, HIGH); // apasare 1 pe butonul B1 - se aprinde doar led-ul 1
break;
case 2:
digitalWrite(4, HIGH); // apasare 2 pe butonul B1 - se aprinde doar led-ul 2
break;
case 3:
digitalWrite(5, HIGH); // apasare 3 pe butonul B1 - se aprinde doar led-ul 3
break;
case 4:
digitalWrite(6, HIGH); // apasare 4 pe butonul B1 - se aprinde doar led-ul 4
break;
case 5:
digitalWrite(7, HIGH);
delay(150);
digitalWrite(7, LOW);
break;
case 6:
digitalWrite(3, LOW); // apasare butonul B1 - se revine in starea initiala
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
break;
}}
else {
led = 0;}
delay(10);
}
Conform cu Arduino Studio, programul are o dimensiune de 1390 bytes si are un numar de
65 linii de cod.
Microcontroller-ului Arduino Uno, are o viteză de procesare de maxim 16 MHz. Înseamnă
că timpul de răspuns al unui program este următorul: T = 1 / f = 1 / 16 = 6.25 ms.
Datorita necesitatii unui timp scazut de raspuns in cadrul aplicatiilor industriale alegem un
processor cu o viteza de procesare de 20 MHz.
Acesta este modelul MKE02Z16VLD2 de la NPX. Astfel timpul de raspuns al programului
o sa fie: T = 1 / f = 1 / 20 = 5 ms.