Sunteți pe pagina 1din 23

1

TEME MIC

MICROCONTROLERUL

1.Ce sunt microcontrolerele i unde se utilizeaz ?
Microcontrolerul este un circuit care include pe acelai chip toate elementele componente
ale unui microcalculator .Spre deosebire de microcalculatoarele din calculatoarele de uz
general, microcontrolerul deservete o aplicaie bine precizat:citeste dispozitive de
intrare cum ar fi butoane si senzori, proceseaza date sau informatii, controleaza
dispozitive de iesire: becuri, displayuri,motoare, speakere.
2. Ce este un sistem ncapsulat Embedded systems ?
Un sistem ncorporat este un sistem informatic conceput pentru a efectua una sau cateva
funcii dedicate, de obicei in timp real. Este inclus, ca parte a unui dispozitiv complet,
incluzand deseori pe langa software si hardware i componente mecanice. De exemplu
ceasuri digitale, mp3 playere, telefoane, etc.
3. . Ce este BASIC Stamp 2 (BS2) i care sunt principalele sale componente ?
Basic Stamp 2 este o mica placa cu circuite imprimate care conine elementele eseniale
ale unui sistem cu microprocesor: un microcontroler care conine procesorul, un
interpretor construit in ROM, memoria EEPROM,un rezonator cu cuartz, un regulator de
tensiune, un bloc de conditionare a semnalului ( de la portul serial de la PC +/-12V la 5 V
la Basic Stamp ).
4. Cum se numete microcontrolerul din BS2 i ce rol are ?
Microcontrolerul din BS2 se numeste PIC16C57 si are rolul de a citi intrarile, procesa
informatiile, controla iesirile.
5. Cte porturi I/O are BS2 i cum sunt notate ?
BS2 are 16 pini de I/O notati P0...P15
6. n ce plaj se ncadreaz tensiunea de intrare Vin pentru BS2
5.5-15V
7. Ce valori au tensiunile Vdd i Vss ?
5V si 0V
8. Cum se numete softul folosit pentru programarea modulului BASIC Stamp 2 ?
BASIC Stamp Editor.
9. Care sunt directivele cu care ncepe fiecare program n PBASIC i cum pot fi
introduse?
Directivele cu care incepe un program in PBASIC sunt cele referitoare la versiunea de
PBASIC si la versiunea de Basic Stamp folosite.Pot fi introduse selectand din bara de
meniu versiunea dorita.
10. Pentru ce sunt folosite comenzile DEBUG i END ?
Comanda DEBUG este folosita pentru a trimite date serial de la BASIC STAMP napoi la
computer pentru a fi afiate. Comanda END este folosita pentru a informat BS ca
programul este complet.




2

Ex.1 Descriei figura alturat!
Ce fac comenzile DEBUG i DEBUGIN. Comanda DEBUG este folosita pentru a trimite
date serial de la BASIC STAMP napoi la computer pentru a fi afiate. DEBUGIN este
folosita pentru a introduce date de intrare de la utilizator cu ajutorul ferestrei DEBUG.
P1. Scriei un program prin care transmitei un mesaj spre monitor prin care afiai pe
rnduri diferite:
Numele i Prenumele; rezultatul zecimal 7x11 ; codul ASCII pentru 7x11;rezultatul
binar 1+2+3+4
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Nume Prenume, CR
DEBUG DEC 7*11,CR
DEBUG 7*11
DEBUG BIN 1+2+3+4



CIRCUITE ELECTRONICE DE BAZA

1. Ce este LED-ul i de ce este cel mai comun indicator luminos ?
LED-ul este o dioda emitoare de lumin. Este o diod semiconductoare ce emite
lumin la polarizarea direct a jonciunii p-n. Efectul este o form de
electroluminescen. Este cel mai comun indicator luminos deoarece are consum redus de
energie , o via lung de funcionare si este ieftin.
2. La ce trebuie s fim ateni cnd folosim un LED ?
Trebuie avut un plus de atenie la orintarea ledului n momentul conectrii
3. Cum se limiteaz curentul prin LED ? (dai un exemplu )
Curentul printr-un Led se limiteaza cu ajutorul unui rezistor . Ex: V=I*R; V=5V-
1.6V=3.4V. I=V/R.
Pt R=220 ohm =>I=15,45 mA. Pt R=470 ohm => I=7.73mA
4. Cum testm un LED ? ( detalii: baterie, flux de electroni i goluri, sensul convenional
al curentului etc).
ntr-o baterie, exist un surplus de electroni, pe de o parte, i un deficit de electroni, pe de
alt parte (goluri). n cazul unui circuit nchis format din baterie ,Led i rezisten, exist
un flux de la o parte in alta. Acesta este numit curent. Curentul pot fi vzut n 2 feluri:
Debit de electroni: electroni curg din partea negativ (-) la partea pozitiv (+) fa sau
Debitul de goluri sau debit convenional: golurile, sau lipsa de electroni, trece de la
pozitiv la negativ. LED-urile au dou terminale:Anodul este terminalul mai lung,Catodul
este terminalul mai scurt,in partea teit a capsulei. Ledul se testeaza doar cu ajutorul
circuitului : un pin al unei rezistente de 470 ohmi se conecteaza la Vdd. Anodul ledului se
conecteaza la celalalt pin al rezistentei. Catodul ledului se leaga la Vss.
5. Ce curent circul prin LED dac il conectm direct la o tensiune de 9V ? Aceeai
ntrebare dac l inseriem cu o rezisten de 10 K. Care este rezistena ideal pentru ca
LED-ul cu consum normal s lumineze ?
V=I*R; V=9V-1.6V=7.4V. I=V/R. Pt R=1 ohm =>I=7.4A. Pt R=10K ohm =>
I=0.74mA. Curentul maxim care trece printr-un led fara a-l distruge este de 30 mA. In
3

functie de alimentare(5v sau 9v) se poate calcula ce rezistenta este necesara pentru a
obtine 30 mA. Daca rezistenta e mai mare atunci ledul va lumina mai putin.
6. Ct de lung este ntrzierea introdus de PAUSE 500 ?
500 milisecunde= 0.5 secunde
7. De cte ori se repet instruciunile cuprinse ntre DO-LOOP.
Se repeta la infinit.
8. Dai exemplu de dou bucle condiionale! Care este comanda care repet de un numr
prestabilit de ori un grup de comenzi ?
DO-LOOP WHILE (Conditie)-este o bucla conditionata. Comanda care repet de un
numr prestabilit de ori un grup de comenzi este FOR-NEXT. Ex: counter VAR Byte
counter=1 DO HIGH 14 PAUSE 250 LOW 14 PAUSE 250 Counter=counter+1 LOOP
While(counter<=10); EX: counter VAR Byte FOR counter = 1 TO 10 HIGH 14
PAUSE 500 LOW 14 PAUSE 500 NEXT
9. Care sunt tipurile de variabile folosite de PBASIC ? Care este cel mai mic tip de
variabil pentru a numra pn la 11 ?
Bit,nib,byte,word. Nib(0-15) pentru a numara pana la 11 e cel mai mic tip de variabila.
10. Este comanda LOW 16 rezonabil ? Dac da, de ce ? Dac nu, de ce ?
Comanda LOW 16 nu este rezonabila deoarece pinii de I/O sunt de la 0 la 15.
Ex.1 Desenai schema electric pentru un LED conectat la P15. Scriei programul prin
care acesta se stinge i aprinde odat pe secund de 30 de ori
counter VAR Byte
FOR counter = 1 TO 30
HIGH 14
PAUSE 500
LOW 14
PAUSE 500
NEXT
END
P1. Desenai schema electric prin care un led bicolor (rou-verde) este conectat la P14 i
P15 , iar unul monocrom (galben) la P13. Scriei un program prin care ledul bicolor este
aprins pe rou 3 sec. dup care se aprinde cel verde pentru 10 secunde, timp n care ledul
galben clipete cu frecvena de o secund
counter VAR Byte
HIGH 15
LOW 14
PAUSE 3000
LOW 15
HIGH 14
FOR counter = 1 TO 10
HIGH 13 ' Yellow LED on
PAUSE 500
LOW 13 ' Yellow LED off
PAUSE 500
NEXT


4

P2. Semafor de trafic Nord-Sud (P13, P14 i P15) , Est-Vest (P3, P4 i P5). Timpi: 30
secunde, rou (verde), 10 secunde galben
DO
HIGH 15 VERDE N-S APRINS
LOW 14 ROSU N-S STINS
LOW 13 GALBEN N-S STINS
HIGH 4 ROSU E-V APRINS
LOW 5 VERDE E-V STINS
LOW 3 GALBEN E-V STINS
PAUSE 20000
HIGH 13 GALBEN N-S APRINS
LOW 15 VERDE N-S STINS
PAUSE 10000
HIGH 14 ROSU N-S APRINS
LOW 13 GALBEN N-S STINS
HIGH 5 VERDE E-V APRINS
LOW 4 ROSU E-V STINS
PAUSE 20000
HIGH 3
LOW 5
PAUSE 10000
LOOP

UTILIZAREA BUTOANELOR IN CIRCUIT

1. Care este diferena dintre depunerea i recepia unui semnal HIGH sau LOW cu BS2
?
Diferena dintre depunerea i recepia unui semnal HIGH sau LOW cu BS2 este ca atunci
cand se receptioneaza un semnal HIGH sau LOW pinul respectiv este folosit ca si pin de
intrare, dar atunci cand se trimite un semnal HIGH sau LOW pinul este folosit ca si pin
de iesire.
2. Care sunt nivelele de tensiune pentru HIGH i LOW
?
LOW <1.4V HIGH >1.4 V
3. Ce nseamn Activ-High i Activ-Low ? Desenai
dou circuite de testare a unui buton folosind un
LED !
Un buton este Activ-Low atunci cand trimite catre BS
un semnal jos (Vss) cand butonul este activ (apasat).
Butonul este Activ-High atunci cand trimite catre BS un
semnal inalt (Vdd) atunci cand este activ (apasat).
2 circuite de testare a butonului cu LED(in fig)
4. Ce comand este utilizat pentru citirea strii
unei intrri a unui pin (ex. P3)?
DEBUG ? IN3
5

5. Care sunt schemele de conectare a unui buton cu rezisten pull-up i pull-down la
pinul P3 ? Ce rol are rezistena de Pull-Down ?
Rezistenta de Pull Down are rolul de a pune intrarea jos (la masa,Vss) atunci cand
butonul nu este apasat.
6. Care este programul pentru afiarea strii unui buton (legat la P3) la inerval de 1/4
sec.?
' {$STAMP BS2} ' {$PBASIC 2.5} DO
DEBUG ? IN3 PAUSE 250 LOOP
7. Care este structura blocurilor de comenzi pentru luarea unor decizii bazate pe starea
unuia sau mai multor butoane?
IF...THEN...ELSE... ENDIF
IF...THEN
IF...THEN...ENDIF
IF...THEN...ELSEIF...THEN... ENDIF
8. Care sunt operatorii logici folosii de PBASIC i care
sunt tabelele de adevr ?
AND, OR si XOR
9. Ce face formatorul HOME n instruciunea DEBUG
HOME ?
Formatorul HOME folositi in instructiunea DEBUG
are rolul de a trimite cursorul in partea stanga sus a ferestrei DEBUG.
P1. a) Desenai schema electric a unui circuit prin care dou leduri monocrom (rou i
verde) conectate la P15 i P14 sunt comandate de dou butoane PB1 i PB2 conectate la
P3 i P4.
b) Pseudocodul programului este: ampele butoane apsate - ambele leduri aprinse, un
buton apsat un led aprins. Facei organigrama i scriei codul programului cu comentarii.
DO
DEBUG ? IN4
DEBUG ? IN3
IF (IN3 = 1 AND IN4 = 1) THEN daca buton1 si buton2 apasate
HIGH 14 aprinde led 1
HIGH !5 aprinde led 2
ELSEIF (IN3 = 1) THEN daca buton1
HIGH 14 aprinde led 1
LOW 15 stinge led 2
ELSEIF (IN4 = 1) THEN daca buton 2 apasat
HIGH 15 aprinde led2
LOW 14 stinge led1
ELSE daca nu
LOW 14 stinge led1
LOW 15 stinge led 2
ENDIF
LOOP
P2. Testarea timpului de reacie a) Schema electric . b) Pseudocodul programului c)
Codul programului
c)' {$STAMP BS2}
X1 X2 AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
6

' {$PBASIC 2.5}
timeCounter VAR Word ' variabila care numara timpul
DO ' incepe bucla principala.
DO ' repeta
LOOP UNTIL IN3 = 1 ' pana se apasa butonul.
LOW 14 ' LED bicolor rosu.
HIGH 15
PAUSE 3000 ' pauza 3 secunde.
HIGH 14 ' LED bicolor verde.
LOW 15
timeCounter = 0 ' atribuie valoarea 0 la timeCounter
DO 'incepe bucla care numara timpul de reactie
PAUSE 1 pauza 1 milisecunda
timeCounter = timeCounter + 1 incrementeaza
LOOP UNTIL IN3 = 0 ' pana cand butonul e eliberat
LOW 14 ' opreste led.
DEBUG "Timpul tau ", DEC timeCounter, ' afisaza timp
"To play again, hold the ", CR, ' Play again
LOOP ' inapoi in bucla principala

b) asteapta pana cand se apasa butonul ;aprinde LED rosu timp de 3 secunde ;aprinde
LED verde; incrementeaza cu 1 ms variabila ce nr timpul scurs de la aprinderea ledului
verde pana cand butonul e eliberat; stinge led; afiseaza timp; repeta de la inceput
programul
P3. Dezvoltai testul de reacie pentru doi juctori (P3 i P4).
timeCounterA VAR Word ' Time score of player A
timeCounterB VAR Word ' Time score of player B
DEBUG "Press and hold pushbuttons", CR, ' Display reaction
' instructions.
"to make light turn red.", CR, CR,
"When light turns green, let", CR,
"go as fast as you can.", CR, CR
DO ' Begin main loop.
DO ' Loop until both press
' Nothing
LOOP UNTIL (IN3 = 1) AND (IN4 = 1)
LOW 14 ' Bi-color LED red.
7

HIGH 15
PAUSE 1000 ' Delay 1 second.
HIGH 14 ' Bi-color LED green.
LOW 15
timeCounterA = 0 ' Set timeCounters to zero
timeCounterB = 0
DO
PAUSE 1
IF (IN3 = 1) THEN ' If button is still down,
timeCounterA = timeCounterA + 1 ' increment counter
ENDIF
IF (IN4 = 1) THEN
timeCounterB = timeCounterB + 1
ENDIF
LOOP UNTIL (IN3 = 0) AND (IN4 = 0) ' Loop until both buttons
' released.
LOW 14 ' Bi-color LED off.
DEBUG "Player A Time: ", DEC timeCounterA, " ms. ", CR
DEBUG "Player B Time: ", DEC timeCounterB, " ms. ", CR, CR
IF (timeCounterA < timeCounterB) THEN
DEBUG "Player A is the winner!", CR
ELSEIF (timeCounterB < timeCounterA) THEN
DEBUG "Player B is the winner!", CR
ELSE ' A & B times are equal
DEBUG "It's a tie!", CR
ENDIF
DEBUG CR
DEBUG "To play again, hold the ", CR ' Play again instructions.
DEBUG "buttons down again.", CR, CR
LOOP ' Back to "Begin main

SERVO MOTOARE

1.Precizai patru tipuri de motoare i dispozitive pentru micare ! Care dintre ele poate fi
comandat direct de BS2 ?
Motoare de curent continuu, de curent alternativ, pas cu pas, servomotoare. Servomotorul
poate fi comandat direct de BS2.
2. Care este componena unui servomotor standard RC (intern i extern) ?
Mufa pentru conectare, cablul, elicea , carcasa care contine in interior motorul de curent
continuu, roti dintate si circuite pentru control.
3.Prin cte fire se conecteaz servo la BS2 ? Specificai-le, inclusiv culorile !
Prin 3 fire: negru la Vss, rosu la Vdd sau Vin si alb la un pin pentru semnal.
4.Care este principiul de funcionare al unui servo standard i a unuia cu rotaie continu
? Desenai schema bloc i explicai !. Cum este controlat un servomotor clasic, dar unul
cu rotaie continu ?
8

+
Servomotoarele standard sunt controlate in pozitie. Servomotoarele cu rotatie continua
sunt provenite din servomotoarele standard dar avand unele modificari si anume
eliminarea traductorului de pozitie respectiv a clapetelor de cursa.

Incarcare
Unghi dorit e U=Kp*e
Unghi de iesire


-







Standard:Unghiul de iesire va depinde de valoarea lui U si de incarcare. Controlul este in
pozitie.
Rotatie continua: viteza motorului depinde de unghiul dorit si de incarcare. Controlul este
in viteza
5.Care sunt comenzile prin care comandm limea impulsurilor i perioada ntre dou
impulsuri ? Specificai argumentele comenzilor! Exemplificai !
PULSOUT pin, durata. Latimea impulsului este specificata prin parametrul durata.
Aceasta durata este increment de 2 microsecunde. Pin specifica pinul folosit. Perioada
dintre doua impulsuri este de 20 ms si se realizeaza prin comanda PAUSE 20.Ex:
PULSOUT 14,750 PAUSE 20 trimite un impuls care dureaza 2*750= 1500
microsecunde=1.5ms la pinul 14 dupa care urmeaza pauza de 20 ms intre impulsuri.
6. Care este plaja de valori pentru argumentul duration i ce se ntmpl dac o depim
?
Plaja de valori pentru duration este
intre 500 si 1000. Daca o depasim,
chiar daca servomotorul nu se
distruge, i se va scurta durata de
viata.
7.Desenai diagrama de impulsuri
pentru un servomotor clasic (
PARALLAX ) !
8.Care sunt elementele de program prin care modificm poziia n timp a elicei
servomotorului.
Pentru modificarea in timp a pozitiei elicei trebuie construita o bucla FOR-NEXT in care
introducem comenzile PULSOUT si PAUSE pentru specificarea duratei impulsului in
fiecare pas al buclei.
9.Cum se modific viteza de deplasare a elicei servomotorului clasic ?
Modificarea vitezei de deplasare a elicei servomotorului clasic se face prin modificarea
argumentului instructiunii STEP in cadrul buclei FOR-NEXT. EX:
Regulator
Kp
Motor+reductor
Senzor de
unghi
9

FOR counter = 500 TO 1000 STEP 8
PULSOUT 14, counter
PAUSE 20
NEXT
10.Care sunt comenzile prin care afim poziia servomotorului i prin care comandm
poziia prin calculator ? Facei o paralel ntre ele !
DEBUGIN DEC pulses citeste nr impulsuri formator DEC - zecimal
DEBUGIN DEC duration citeste durata impuls in format zecimal(comanda prin
calculator)
FOR counter = 1 TO pulses
PULSOUT 14, duration
PAUSE 7 pauza 7 in loc de 20 deoarece comanda DEBUG de mai jos dureaza cateva
secunde
DEBUG DEC5 counter, CR, CRSRUP afisare pozitie counter, implicit pozitia servo
NEXT formatorul DEC5 afiseaza nr zecimale cu 5 cifre

Ex.1 Scriei codul programului prin care durata se modific ntre 700 i 800 i invers:
a) Cu pas de 1 b) Cu pas de 4
FOR counter = 700 TO 800 FOR counter = 700 TO 800 STEP 4
PULSOUT 14, counter PULSOUT 14, counter
PAUSE 20 PAUSE 20
NEXT NEXT
FOR counter = 800 TO 700 FOR counter = 800 TO 700 STEP 4
PULSOUT 14, counter PULSOUT 14, counter
PAUSE 20 PAUSE 20
NEXT NEXT

P1. a) Desenai schema electric prin care un servo conectat la P14 este comandat cu
dou butoane (PB1 i PB2 ) conectate la P3 i P4. Scriei codul programului prin care
servo se rotete n sensul acelor de ceasornic (CW) dac PB1 este apsat i n sens invers
(CCW) dac PB2 este apsat
' {$STAMP BS2}
' {$PBASIC 2.5}
duration VAR Word
duration = 750
DO
IF IN3 = 1 THEN
IF duration > 500 THEN se verifica pt a nu cobora
duration = duration 25 sub 500
ENDIF
ENDIF
IF IN4 = 1 THEN
IF duration < 1000 THEN se verifica pt a nu
duration = duration + 25 depasi 1000
ENDIF
ENDIF
10

PULSOUT 14, duration
PAUSE 10
DEBUG HOME, DEC4 duration, " = duration"
LOOP


CIRCUIT CU POTENTIOMETRU

1.Ce este poteniometrul ? Dai cteva exemple unde se utilizeaz !
Potentiometrul este un rezistor cu 3 terminale (unul este cursorul) care poate functiona ca
o rezisternta variabila in functie de pozitia cursorului. Se utilizeaza in echipamentele
audio, in joystick-uri,in servomotoare
2.Poteniometrul este un traductor de deplasare sau de poziie ? Un servomotor conine
poteniometru ? Dac da , ce rol are acesta ?
Potentiometrul este un traductor de pozitie. Un servomotor contine
potentiometru. Acesta este folosit in bucla de reactie a sistemului
pentru calculul abaterii dintre marimea prescrisa si marimea reala.
Potentiometrul ne da pozitia reala a servomotorului.
3. .Desenai un circuit de testare a unui poteniometru folosind un LED
4. Desenai un circuit RC pentru determinarea valorii unei rezistene i
explicai funcionarea
Cand butonul este apasat
condensatorul de incarca. Cand este
eliberat Basic Stamp incepe
sa numere si condensatorul sa se
descarce. Basic Stamp continua
sa numere pana cand intrarea de
pinul 7 devine LOW adica coboara
sub 1.4V. Timpul de descarcare contorizat de BS este
proportional cu capacitatea si
rezistenta. Cunoscandu-se valoarea capacitatii se poate
calcula valoarea rezistentei in cauza.


5.Care este comanda folosit de BASIC Stamp 2 pentru msurarea unei rezistene.
Explicai argumentele acestei comenzi
RCTIME Pin, Stare, Variabila;
Pin-pinul la care este conectat circuitul RC; Stare-starea initiala a pinului cand incepe
numaratoarea (0 sau 1); Variabila- variabila in care se
stocheaza in memorie valoarea timpului scurs, increment de 2
microsecunde.
6. Desenai schema electric de msurare a unui poteniometru
conectat la P7. Scriei programul RC-time de afiare a valorii
poteniometrului i explicai-l.
time VAR Word declarare variabila ce contorizeaza timp
DO bucla infinita
11

HIGH 7 pin 7 pe HIGH
PAUSE 100
RCTIME 7, 1, time intoduce in variabila time valoarea timpului RC
DEBUG HOME, "time = ", DEC5 time afiseaza variabila time
LOOP
7.Ce face directiva CON ? Explicai utilizarea pentru nume i numere !
Directiva CON poate substitui un nume sau un numar. De exemplu Offset CON 300 va
substiui numarul 300 cu Offset. Este de folos daca avem in multe locuri de introdus in
program valoarea offsetului ca fiind 300. E mai usor de inteles programul daca in locul
unei valori numerice punem un nume sugestiv .
E1. ntr-un circuit RC condensatorul are valoarea C= 0,5 F iar rezistena de 100 .
Dorii o valoare a timpului de descrcare de 100 de ori mai mare. Ce soluii avei ?
Justificai soluia aleas
Exista mai multe solutii: un condensator de 50 F sau o rezistanta de o rezistenta de
10k, sau o combinatie de un condensator si o rezistenta care sa duca la un timp de
descarcare dorit. Prefer solutia cu rezistenta de 10 k pentru ca e eficienta , ieftina, la
indemana.
P2. Descriei programul (pseudo codul) prin care se poate controla poziia unui
servomotor cu un poteniometru . Scriei codul programului cu comentarii !
scaleFactor CON 185
offset CON 500
rcPin CON 7
delay CON 10
servoPin CON 14
time VAR Word
DO
HIGH rcPin
PAUSE delay
RCTIME rcPin, 1, time
time = time */ scaleFactor ' Scale scaleFactor.
time = time + offset ' Offset by offset.
PULSOUT servoPin, time ' Send pulse to servo.
DEBUG HOME, DEC5 time ' Display adjusted time value.
LOOP


DISPLAY DIGITAL

1. Ce este un afiaj cu 7 segmente ? Dai cteva
exemple unde l ntlnim n viaa cotidian!
Este un bloc dreptunghic format din 7 LED-uri in
forma de bara de lungime egala aranjate astfel incat sa
poata afisa cifre si cateva litere, in functie de ce leduri
sunt aprinse. Se intalnesc peste tot in viata cotodiana,
la afisajele aparatelor electrocasnice, la afisajul
12

echipamentelor multimedia, ceasuri electronice, afisajul din bordul autoturismelor, etc.
2. n figura alturat se prezint schematic un digit cu 7 segmente plus punctul. Este cu
catod comun sau cu anod comun ? Desenai cazul contrar !
Este cu catod comun.

3.Care este valoarea rezistenei prin care fiecare segment este legat la BS2 ? De ce nu
poate fi mai mic ?

4.Unde se conecteaz pinul 3 sau 8 n cazul de fa ? Dar n cazul contrar ?
In cazul de fata- catod comun, pinul 3 sau 8 se conecteaza la masa (Vdd). In cazul contrar
se conecteaza la Vss.
5. Pini 1,2,4, 5,6,7,9 i 10 se conecteaz n ordine la pini P8, P9....P15. Scriei codul
programului prin care se activeaz fiecare segment la interval de o secund !
pinCounter VAR Nib
DEBUG "I/O Pin", CR,
"-------", CR
FOR pinCounter = 8 TO 15
DEBUG DEC2 pinCounter, CR
HIGH pinCounter
PAUSE 1000
LOW pinCounter
NEXT
6.Explicai prin diagrama memoriei RAM:
IN0, OUT0, DIR0, ....IN15, OUT15, DIR15; INA, OUTA,
DIRA...........................................................INS, OUTS, DIRS !
IN0, OUT0, DIR0, ....IN15, OUT15, DIR15- sunt registrii in care sunt stocate valorile pt
pini 0...15,directia acestora (intrare 0 iesire 1) si starea iesirii (0 sau 1), ca si biti,fiecare
pin in parte
INA, OUTA, DIRA-registrii in care sunt stocate valorile pt pinii 0-3, directia si starea
acestora, ca si variabile nibble, toti 4 impreuna. La fel INB, OUTB, DIRB; INC, OUTC,
DIRC; IND, OUTD, DIRD pentru pinii 4-7;8-11;12-15; INL, OUTL, DIRL; INH,
OUTH, DIRH registrii care stocheaza valorile pt pini 0-7 respectiv 8-15,directia
acestora (intrare 0 iesire 1) si starea iesirii (0 sau 1) ca si variabile de tip byte.
INS, OUTS, DIRS registrii care stocheaza valorile pt pini 0-15,directia acestora (intrare
0 iesire 1) si starea iesirii (0 sau 1) ca si variabile de tip cuvant (16 biti).
7.Scriei un program prin care afiai cifrele de la 0 la 9 la interval de sec.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "Program Running!"
OUTH = %00000000 ' OUTH initialized to low.
DIRH = %11111111 ' Set P8-P15 to all output-low.
' Digit:
' BAFG.CDE
OUTH = %11100111 ' 0
PAUSE 500
OUTH = %10000100 ' 1
13

PAUSE 500
OUTH = %11010011 ' 2
PAUSE 500
OUTH = %11010110 ' 3
PAUSE 500
OUTH = %10110100 ' 4
PAUSE 500
OUTH = %01110110 ' 5
PAUSE 500
OUTH = %01110111 ' 6
PAUSE 500
OUTH = %11000100 ' 7
PAUSE 500
OUTH = %11110111 ' 8
PAUSE 500
OUTH = %11110110 ' 9
PAUSE 500
DIRH = %00000000 ' I/O pins to input,
' segments off.
END
8.Explicai comanda LOOKUP index, [ %11100101, %11100001, %01100001,
%00100001, %00000001, %00000000 ], OUTH .
In exemplul considerat indexul poate avea 6 valori, de la 0 la 5 conform nr de octeti din
paranteza. In functie de indexul introdus in comanda, OUTH va primi valoarea octetului
corespunzator indexului din comanda. De exemplu daca index=2 atunci OUTH va avea
valoarea 01100001 corespunzatoare celui de-al treilea index.
P1 Scriei un program prin care afiai data nateri cu pauz de 0,5 sec.
'{$STAMP BS2}
'{$PBASIC 2.5}
DEBUG "06 07 87
OUTH = %00000000 ' OUTH initialized to low.
DIRH = %11111111 ' Set P8-P15 to all output-low
OUTH = %11100111 ' 0
PAUSE 500
OUTH = %01110111 ' 6
PAUSE 500
OUTH = %11100111 ' 0
PAUSE 500
OUTH = %11000100 ' 7
PAUSE 500
OUTH = %11110111 ' 8
PAUSE 500
OUTH = %11000100 ' 7
PAUSE 500
DIRH = %00000000 ' I/O pins to input,
END
14

FOTOREZISTENTE

1. Prezentai pe scurt cteva tipuri de senzori cunoscui. Detaliai senzorii de lumin.
Butonul - senzor de presiune, potentiometrul-senzor de pozitie, de temperatura, de fum,
de lumina. Din categoria senzorilor de lumina fac parte : fotodioda, fototranzistorul,
fotorezistenta.
Aceste elemente sunt sensibile la radiatia luminoasa, si isi schimba starea de conducere
sau nu a curentului (fotodioda, fototranzistorul) sau isi modifica rezistivitatea electrica
invers proportional cu lumina (fotorezistenta).
2.Ce este o fotorezisten ? Ce substan chimic face fotorezistena sensibil la lumin ?
Cum sugereaza si numele, aceasta este un rezistor care reacioneaz la lumin.
Ingredientul activ Sulfatul de Cadmiu (CdS) permite electronilor s treac mai uor cnd
energia luminii o lovete, astfel sczndu-i rezistena (opoziia la fluxul de curent ). Cu
ct este mai puternic lumina cu att mai mic va fi i rezistena
3. Care este diferena ntre fotorezisten i poteniometru ? Desenai
simbolurile electrice pentru ambele.
Fotorezistenta isi modifica rezistenta in functie de lumina,
potentiometru in functie de pozitia cursorului.

4. . Ce nseamn EEPROM. Ci bytes pot fi memorai n EEPROM-ul din BS 2 ? Ci
bii pot fi memorai?
Electrically Erasable Programmable Read-Only Memory) Cea mai important
caracteristic a acestei memorii este c nu pierde coninutul n timpul nchiderii sursei de
alimentare. Pot fi memorati 2kbytes adica 2048 bytes adica 2048*8=16384 biti.
5. Ce comand este folosit pentru a scrie n EEPROM caractere ? Detaliai cu exemple.
WRITE Locaii, {Word} Date . Ex: WRITE 7, 195 stocheaza valoarea 195 in locatia 7.
WRITE 10, Word 50012 stocheaza valoarea 50012 in locatia 10. Se foloseste Word pt ca
sunt necesari 2 bytes pt a stoca valoarea respectiva.
6.Ce comand citete date din EEPROM . Detaliai
READ Locaie, {Word} Date . Citeste datele din Locatie, byte sau word si le introduce in
variabila Date. Ex: READ 7, littleRR; READ 8, Word eepromValueA
7.Exist erorori n urmtoarea secven de program ? Dac da , explicai-le !
WRITE 7, 125
WRITE 8, 300
WRITE 9, word 66700
Da. 300>255 deci e nevoie de parametrul Word, ocupandu-se astfel 2 bytes, deci
urmatoarea locatie libera fiind 10 nu 9.
8.Ce este o subrutin ? Cum se apeleaz ? Cum se termin ? Exemplificai cu subrutina
de citire i afiare a valorii unei fotorezistene.
Subrutina este o secventa de program separata de programul principal. Se apeleaza cu
GOSUB Nume_subrutina si se sfarsesc cu RETURN.
Ex:
DO ' Main routine.
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
15

LOOP
E1. Desenai schema de test a unei fotorezistene conectat la pinul P5. Scriei programul
de testare i afiare _
DO
HIGH 5
PAUSE 100
RCTIME 5, 1, time
DEBUG HOME, "time = ", DEC5 time
LOOP
P1.a) Desenai schema unui light Meter. Scriei programul i comentai-l.
b) Modificai programul astfel ca segmentele circulare
s se aprind n sens invers.
' {$STAMP BS2}
' {$PBASIC 2.5}
DEBUG "Program Running!"
index VAR Nib ' Variable declarations.
time VAR Word
OUTH = %00000000 ' Initialize 7-segment display.
DIRH = %11111111
DO ' Main routine.
GOSUB Get_Rc_Time
GOSUB Delay
GOSUB Update_Display
LOOP
' Subroutines
Get_Rc_Time: ' RC-time subroutine
HIGH 2
PAUSE 3
RCTIME 2, 1, time
RETURN
Delay: ' Delay subroutine.
PAUSE time
RETURN
Update_Display: ' Display updating subroutine.
IF index = 6 THEN index = 0
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
index = index + 1
RETURN
B)Se modifica subrutina update_display
Update_Display: ' Display updating subroutine.
16

IF index = 0 THEN index = 6
' BAFG.CDE
LOOKUP index, [ %01000000,
%10000000,
%00000100,
%00000010,
%00000001,
%00100000 ], OUTH
index = index - 1
RETURN


MICROFON PIEZOELECTRIC

1.Facei referiri, n czeva fraze, la urmtoarele: beep-ul electronic n viaa cotidian;
principiul difuzorului piezoelectric; cum genereaz microcontrolerul sunete
Microcontrolerele produc sunete trimitand semnale high-low foarte repede la un speaker.
Viteza la care semnalul se pereta este numita frecventa si este masurata in hertz.
Difuzorul piezoelectric este comun, mic si ieftin si este folosit in multe dispozitive
2.Ce face comanda FREQOUT 1,500,2000
Trimite semnale high-low la pinul 1 cu durata de 0.5 la frecventa de 2000Hz.
3.Cum putem modifica comanda de la 2 pentru a mixa dou frecvene (2 KHz i 3 Khz )
?
Comanda FREQOUT are un parametru optional Freq2 care permite cantarea a 2
frecvente simultan
FREQOUT 1, 500, 2000, 3000
4.Care sunt parametrii pe care microcontrolerul i poate modifica pentru ajustarea
efectului unui sunet
Durata, frecventa1, frecventa2
5.Ce face directiva DATA ? Cu cine este echivalent ? Cum se scrie ? Exemplificai
pentru scrierea secvenei de note C,C,G,G ,A, A i a frecvenelor corespunztoare (
C=2093, G=3136, A=3520 ).
Directiva data stocheaza o lista de expresii. Este similara cu comanda WRITE.
Notes DATA "C","C","G","G","A","A"
Frequencies DATA Word 2093, Word 2093, Word 3136, Word 3136, Word 3520, Word
3520
6.Ce face directiva READ i cum lucreaz ? Exemplificai pentru citirea ultimei note i a
frecvenei corespunztoare (din secven de la 5)
READ citeste caracterele stocate in EEPROM. De exemplu pt ultima nota din exemplu
anterior indexul este 5 .
Index=5; READ Notes+index,noteLetter; READ Frequencies +(index*2), Word noteFreq
7.Ce face SELECT.....CASE ? Dai un exemplu de condiionri
SELECT....CASE evalueaza o expresie (sau o variabila) si in functie de valoarea acesteia
exista mai multe cazuri posibile. Pt o anumita valoare exista un singur caz cu un anumit
set de instructiuni. De exemplu:
SELECT character
17

CASE "A" TO "Z"
DEBUG CR, "Upper case", CR
CASE "a" TO "z"
DEBUG CR, "Lower case", CR
CASE "0" TO "9"
DEBUG CR, "Digit", CR
CASE "!", "?", ".", ","
DEBUG CR, "Punctuation", CR
CASE ELSE
DEBUG CR, "Character not known.", CR,
"Try a different one."
ENDSELECT
Ex 1. Scriei un program prin care frecvena crete de la 1500 la 3000 Hz cu pasul de 500
la fiecare sec. Durata este constant, de 500 ms.
FOR frequency = 1500 TO 3000 STEP 500
FREQOUT 9, 500, frequency
PAUSE 500
NEXT
P1. a) Desenai schema electric a montajului n care dou
butoane PB1 i PB2 conectate la pini P3 i P4 comand un
piezospeaker legat la pinul P9.
b) desenai organigrama programului prin care dac sunt
apsate ambele butoane se emite un sunet cu frecve mixat , 2
Khz cu 3 Khz, cu durata de 1 sec. Dac este apsat PB1 se
emite un sunet cu frecvena de 2 Khz, i durata 0,5 sec, iar dac
este apsat Pb2 sunet cu frecvena de 3Khz i durata de 200 ms.
c) scriei codul programului !
DO
IF (IN4 = 1 AND IN3 = 1)
FREQOUT 9, 1000, 2000 ,3000
ELSEIF (IN3 = 1) THEN
FREQOUT 9, 500, 2000 ' 2000 Hz for 500 ms
ELSEIF (IN4 = 1) THEN
FREQOUT 9, 200, 3000 ' 3000 Hz for 100 ms
ENDIF
LOOP


POTENTIOMETRU DIGITAL

1.n figura alturat se prezint modulul BASIC Stamp 2. Precizai ce sunt cipurile mici
indicate prin sgeile 1, 2 i 3 ! Ce funcii au acestea ?
1-EEPROM memoreaza programul chiar daca se intrerupe alimentarea.
2-Regulator de 5V. Converteste tensiunea de alimentare in 5V
3-microcontrolerul propriu zis care contine interpretor PBASIC

18


2.Cte circuite integrate intr ntr-un tranzistor NPN ? R: a) de ordinul miilor; b) de
ordinul zecilor de mii ; c) nici unul. Detaliai rspunsul.
De ordinul miilor.Tranzistorul se afla la baza circuitelor integrate. In
interiorul carcasei de plastic sau ceramica se afla un mic cip de silicon cu
sute sau mii de tranzistori.
3.Care sunt numele terminalelor unui tranzistor bipolar ? Desenai simbolul
unui tranzistor NPN i marcai terminalele
Baza, emitor, colector
4.Cine controleaz curentul Colector-Emitor prin tranzistor ? Desenai
schema !
Curentul de pe B-E va controla curentul de pe C-E impreuna cu factorul de
amplificare
5.Desenai circuitul de testare a unui tranzistor cu ajutorul unui
poteniometru de 10 K i a unei rezistene de 50 K n baz. Dac factorul
de amplificare h
FE
este 400, care este curentul I
CE
dac cursorul
poteniometrului este la: a) mijloc, b) la captul de jos, c) la captul de sus ?
a) (2.5V-0.7V)/50K = 36uA ;36uA x 400 = 14.4mA
b) (0.7V-0V)/50K = 14uA ;14uA x 400 = 5.6mA
c)(5V-0.7V)/50k=86uA; 86uA x 400 =34.4 mA
6.Ce este poteniometru digital i ce conine ? Desenai schematic
un poteniometru digital cu 128 trepte.
Un potentiometru digital este un potentiometru care isi modifica
rezistenta in functie de starea intrerupatoarelor. Acestea sunt in
realitate tranzistoare
7.Care sunt liniile de control ale
poteniometrului digital AD 5220 ?
CS-chip select; CLK-clock ;U/D- up/down
P1. n figura alturat se prezint un circuit
de testare a unui poteniometru digital.
Descriei modul de funcionare i pseudo
codul programului.Scriei codul programului
adugnd comentariile necesare .
counter VAR Byte
DO
LOW 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT
HIGH 5
FOR counter = 0 TO 127
PULSOUT 6, 1
PAUSE 10
NEXT LOOP

19

APLICATII CU BOE-BOT

SERVO MOTOARELE BOE-BOT-ULUI

1. Servomotorul standard are un mecanism de feedback conectat la elice. Dupa ce
este citita pulsatia, pozitia actuala este comparata cu cea initiala, iar elicea se va
roti pana cand cele doua valori coincid. Servomotorul are un cuplu mare cand este
pozitionat.
Servomotorul cu rotatie continua are un mecanism de feedback care este ajustat la
un puls de centru (750 or 1.5mS) pentru a opri servomotorul. Pulsuri cu valori mai
mari sau mai mici ii permit sa se roteasca liber cu viteze diferite in ambele
directii.
2. Deoarece serovmotoarele nu sunt pre-ajustate din fabrica, acestea se ajusteaza cu
ajutorul unei surubelnite pentru a sta nemiscate. Acest lucru se numete centrarea
servo. Dupa ajustare se va testa servomotorul pt a ne asigura ca ele functioneaza
intr-un mod corespunzator.
3. Variabilele sunt folosite pt a stoca valori. Inainte de a putea utilize o variabila in
PBASIC trebe sa ii dam un nume sis a specificam dimensiunea sa. Acest lucru se
num declararea unei variabile. Tipuri de variabile: Bit(0-1), Nib(0-15), Byte(0-
255), Word(0-65535 sau -32768 la +32767)
4. La un puls de 1.5 ms se foloseste comanda Pulseout 15, 750 pt rotire in sensul
acelor de ceas. La un puls de 1.3 se foloseste comanda Pulseout 1.5 650.
5.












20


P1. DEBUG "Program Running!"
counter VAR Word
FOR counter = 1 TO 120 ' Loop for three seconds
PULSOUT 13, 850 ' P13 servo counterclockwise
PULSOUT 12, 850 ' P12 servo counterclockwise
PAUSE 20
NEXT
FOR counter = 1 TO 124 ' Loop for three seconds
PULSOUT 13, 650 ' P13 servo clockwise
PULSOUT 12, 650 ' P12 servo clockwise
PAUSE 20
NEXT
FOR counter = 1 TO 122 ' Loop for three seconds
PULSOUT 13, 650 ' P13 servo clockwise
PULSOUT 12, 850 ' P12 servo counterclockwise
PAUSE 20
NEXT
FOR counter = 1 TO 122 ' Loop for three seconds
PULSOUT 13, 850 ' P13 servo counterclockwise
PULSOUT 12, 650 ' P12 servo clockwise
PAUSE 20
NEXT
END

NAVIGAREA BOE-BOT-ULUI

1. Pt ca Boe-Bot-ul sa se deplaseze inainte roate stanga trebuie sa se roteasca invers
acelor de ceas, iar cea dreapta in sensul acelor de ceas.
2. Cand Boe-Bot-ul pivoteaza sper stanga roata dreapta se roteste in sensul acelor de
ceas iar roate stanga la fel. Comanda este : For counter=1 to 122
Pulseout 13, 650
PULSOUT 12, 650
NEXT
3. FOR counter = 1 TO 40 ' Stop one second.
PULSOUT 12, 750
PULSOUT 13, 750
PAUSE 20
NEXT
FOR counter = 1 TO 122
PULSOUT 13, 850
PULSOUT 12, 650
PAUSE 20
NEXT
21

5. Argumentul comanzii PULSOUT specifica ce roata executa miscare si in ce sens (
trigonometric sau acelor de ceas), iar bucla FOR counter=1 to 100 comanda cat timp sa se
roteasca roata mentionata in PULSOUT.
6. Pentru a stoca valori n memoria EEPROM a lui BASIC Stamp nainte de rularea
unui program folosim Directiva DATA. Ex: DATA "FLFFRBLBBQ"
7. Pentru a extrage o valoare stocat n memoria EEPROM i pt a o copia unei variabile
se foloseste comanda READ. Ex: DO UNTIL (instruction = "Q")
READ address, instruction
address = address + 1
' PBASIC code block omitted here.
LOOP
8. Blocul de cod folosit pentru a selecta o anumit variabil i pentru a o evalua pe baz
de caz este SELECT ... CASE ... ENDSELECT. EX: SELECT instruction
CASE "F": GOSUB Forward
CASE "B": GOSUB Backward
CASE "R": GOSUB Right_Turn
CASE "L": GOSUB Left_Turn
ENDSELECT
9. Poate fi folosita conditia DO UNTIL (conditie) LOOP permite buclei sa se repete
pana cand conditia este indeplinita. Conditia DO WHILE(conditie) LOOP perimte
buclei sa se repete atata timp cat o stare exista. Conditia DO LOOP UNTIL (conditie)
permite buclei sa se repete pana cand caracterul Q este citit din EEPROM.
Exercitii: 1. DEBUG "Program Running!"
counter VAR Word
pulseLeft VAR Word
pulseRight VAR Word
pulseCount VAR Byte
FREQOUT 4, 2000, 3000
pulseLeft = 650: pulseRight = 850: pulseCount = 64: GOSUB Navigate
END
Navigate:
FOR counter = 1 TO pulseCount
PULSOUT 13, pulseLeft
PULSOUT 12, pulseRight
PAUSE 20
NEXT
PAUSE 200
RETURN
2. pulseLeft = 850: pulseRight = 850: pulseCount = 8( intoarcere de 30 de grade)
pulseLeft = 850: pulseRight = 850: pulseCount = 12 (intoarcere de 45 de grade )
pulseLeft = 850: pulseRight = 850: pulseCount = 16 (intoarcere de 60 de grade)
3. DEBUG "Program Running!"
counter VAR Word
pulseLeft VAR Word
pulseRight VAR Word
pulseCount VAR Byte
22

FREQOUT 4, 2000, 3000
pulseLeft = 850: pulseRight = 650: pulseCount = 64: GOSUB Navigate


NAVIGAREA CU FOTOREZISTENTE

1. Lumina puternic determina o valoare scazuta a rezistentei pe cand lumina slaba
determina valori mai mari ale rezistentei, aproximativ 50 k. Dac nivelurile de lumin
sunt ntre strlucitor i ntunecat valorile rezistentei vor fi undeva intre stralucitor si
intunecat.
2. nu. Valoarea tensiunii aplicate cauzeaza registrul de intrare sa schimbe ceea ce
stocheaza. Dac
tensiunea aplicat este mai mic de 1.4 voli, stocheaz un 0. n caz contrar, stocheaz 1.
3. Tensiunea de prag este o valoare care poate fi 1 logic daca este deasupra de prag si 0
logic daca este sub prag. Tensiunea de prag a unui pin I/O pt Basic Stamp este de 1,4 V.
4. Valoarea Vo este determinat de raportul dintre rezistene . Valoarea tensiunii Vo se
schimba daca valoare rezistentei se modifica.
5. Acesta verific senzori I intre fiecare puls, n loc de a avea manevre fixe ale mai
multor impulsuri. Acest lucru face ca Boe-Bot ul sa fie mult mai receptiv.
6. Declararea unei constant spune compilatorului valoarea constantei d-voastra. O
constanta da un nume util unui numar sau unei valori folosita intr-un program . Pentru a
folosi o constanta trebuie scris numele constantei oriunde in program unde este nevoie de
valoarea acesteia.
7. Expresiile sunt evaluate de la stnga la dreapta. Acest lucru este diferit de cel standard
de evaluare algebrice, n cazul n care nmulire i mprire sunt evaluate nainte de a
plus i scderea.
8. n FlashLightControlledBoeBot.bs2, mediile au fost utilizate pentru a calcula pragul
de iluminare. n RoamingTowardTheLight.bs2 este calculata o medie de citire intre
stanga si dreapta . Ele difera prin faptul ca primul se calculeaza static prin declararea unei
constante, iar al doilea se calculeaza dimanic ca program ce ruleaza. Ele sunt similare,
n sensul c ambele aduga dou valori mpreun i se mparte la 2.
P1. DEBUG "Program Running!"
pulseCount VAR Byte
FREQOUT 4, 2000, 3000
DO
IF (IN6 = 0) AND (IN3 = 0) THEN ' Both photoresistors detects
GOSUB Back_Up ' shadow, back up & U-turn
GOSUB Turn_Left ' (left twice).
GOSUB Turn_Left
ELSEIF (IN6 = 0) THEN ' Left photoresistor detects
GOSUB Back_Up ' shadow, back up & turn right.
GOSUB Turn_Right
ELSEIF (IN3 = 0) THEN ' Right photoresistor detects
GOSUB Back_Up ' shadow, back up & turn left.
GOSUB Turn_Left
ELSE ' Neither photoresistor detects
23

GOSUB Forward_Pulse ' shadow, apply a forward pulse.
ENDIF
LOOP
Subroutine :
Forward_Pulse: ' Send a single forward pulse.
PULSOUT 12,650
PULSOUT 13,850
PAUSE 20
RETURN
Turn_Left: ' Left turn, about 90-degrees.
FOR pulseCount = 0 TO 20
PULSOUT 12, 650
PULSOUT 13, 650
PAUSE 20
NEXT
RETURN
Turn_Right:
FOR pulseCount = 0 TO 20 ' Right turn, about 90-degrees.
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
NEXT
RETURN
Back_Up: ' Back up.
FOR pulseCount = 0 TO 40
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
NEXT
RETURN

S-ar putea să vă placă și