Sunteți pe pagina 1din 9

Peak detector(detector nivel)

In cele ce urmeaza am sa prezint aplicatia “Peak detector” sau detector de nivel .


Pentru aceasta am folosit o placuta de dezvoltare Arduino Leonardo, circuit de
amplificare a semnalului analog audio. Rezultatul in cazul in care arduino
detecteaza cel mai inalt nivel de tensiune a semnalului audio de la intrare va
aprinde un led pe portul 13 iesire digitala, iar pe portul serial vor veni valori
numerice de la 0 la 1024 , in functie de semnalul aplicat la inrarea analoaga A0
a placutei de dezvoltare.
Pentru realizarea proiectului sa folosit:
-placuta de dezvoltare Arduino Leonardo
-amplificator operational lm301(quad operational amplifier)
- rezistor de reactie 100k ohm
- divizor rezistiv alimentare operational 2 rezistori x 180k ohm
- divizor rezistiv output 2 rezistori x 180k ohm
- capacitor electrolitic decuplare componenta continua 10 uF /16v
- capacitori decuplare componenta alternativa 2 x 10nF.
-potentiometru liniar 10k ohm

Pentru a intelege indeplin functionalitatea circuitului am sa prezint mai intai


putin placuta de dezvoltare Arduino Leonardo. Arduino Leonardo face parte din
gama Arduino de placute pentru dezvoltare prototip, astfel toata gama de
produse Arduino a fost conceputa ca platforma open source de dezvoltare pe
diferite tipuri de microcontrolere. Arhitectura lor difera
de la produs la produs si putem gasii arhitecturi de microcontrolere ce
functioneaza pe 8 , 16 sau in unele mai complexe pe 32 de biti. In cazul de fata
avem un Arduino Leonardo ca arhitectura el se preteaza unui sistem pe 8 biti.
Arduino Leonardo are urmatoarele caracteristici:

Prezentare generală
Arduino Leonardo este o placa microcontroler bazat pe ATmega32u4 . Ea are
20 de pini digitali de intrare / ieșire (din care 7 pot fi utilizati ca ieșiri PWM și 12
ca intrări analogice), un oscilator de 16 MHz , un micro USB ca si conexiune, o
mufa de alimentare, un antet ICSP, și un buton de resetare. Acesta conține tot ce
este necesar pentru a sprijini acest tip de microcontroler, pur și simplu se
conecteaza la un computer cu un cablu USB .
Leonardo diferă de toate versiunile precedente în care ATmega32u4 are build in
USB ca si interfata de comunicare, eliminând nevoia de un procesor secundar.
Acest lucru permite Leonardo să apară la un calculator conectat ca un mouse și
o tastatură, în plus față de o interfata virtuală (CDC) serial / portul COM.
Rezumat

Microcontroller ATmega32u4
Tensiune de operare 5V
Tensiune de intrare
7-12V
(recomandat)
Tensiune de intrare (limite) 6-20V
Digital I / O Pins 20
PWM Canale 7
Canale analogice de intrare 12
Curent pe I / O Pin DC 40 mA
Curent DC 3.3V pentru Pin 50 mA
32 KB (ATmega32u4) din care 4 KB utilizate de
Flash Memory
bootloader
SRAM 2.5 KB (ATmega32u4)
EEPROM 1 KB (ATmega32u4)
Frecventa 16 MHz

Intrare și de ieșire
Fiecare dintre cei 20 pini de I / O digitali de pe Leonardo poate fi utilizat ca o
intrare sau de ieșire, utilizând pinMode () , digitalWrite () , și digitalRead () ca si
funcții. Ei funcționează la 5 volți. Fiecare pin poate oferi sau primi un maxim de
40 mA și are un pull-up rezistor intern (deconectat implicit) de 20-50 kohmi. În
plus, unii pini au funcții specializate:

 Serial:. 0 (RX) și 1 (TX) folosit pentru a primi date (RX) și transmisie (TX)
date seriale TTL utilizând capacitatea ATmega32U4 . De reținut că pe
Leonardo, clasa serial se referă la USB (CDC), comunicare; pentru serial
TTL pe pinii 0 și 1, se utilizeaza clasa serial1.
 TWI:. 2 (SDA) și 3 (SCL) suport de comunicare TWI folosind biblioteca
aferenta .
 Întreruperile externe:. 2 și 3 Aceste ace pot fi configurate pentru a
declanșa o întrerupere pe o valoare scăzută, un front crescător sau
descrescător, sau o modificare a valorii. A se vedea attachInterrupt ()
funcția pentru detalii.
 PWM:. 3, 5, 6, 9, 10, 11, și 13 Furnizarea de 8-biți de ieșire PWM cu
analogWrite () funcția.
 SPI: pe antetul CIPS Aceste pini suporta SPI comunicare folosind.
biblioteca SPI . Rețineți că pinii SPI nu sunt conectati la oricare dintre
I / O digitali.
 LED-uri: 13 Există un built-in LED conectat la digital pin 13.. Atunci când
pinul este high, LED-ul este aprins, atunci când pinul este LOW, e oprit.
 Intrări analogice:. A0-A5, A6 - A11 (pe pinii digitali 4, 6, 8, 9, 10, și 12)
Leonardo are 12 intrari analogice, etichetate A0 prin A11, toate acestea
pot fi, de asemenea, folositi ca I/O digitali . Pini A0-A5 apar în aceleași
locații ca și pe Uno; intrările A6-A11 sunt pe pinii I / O digitali 4, 6, 8, 9, 10,
și 12, respectiv. Fiecare intrare analogică furnizează 10 biți de rezoluție
(adică 1024 valori diferite). În mod implicit analogic măsurarea intrări de la
masa la 5 volti, desi este posibil pentru a schimba capătul de sus din
gama lor folosind pinul AREF și analogReference () funcția.
Există o serie de alti pini pe placa:
 AREF tensiune de referință pentru intrările analogice.. Folosit cu
(analogReference).
 Reset. Adu această linie LOW pentru a reseta microcontroler. De obicei
folosit pentru a adăuga un buton de resetare .

A se vedea, de asemenea, cartografiere între pini Arduino și ATmega32u4 si


porturi .

Comunicare
Leonardo are o serie de facilitați pentru comunicarea cu un calculator,sau un alt
Arduino, sau alte microcontrolere. ATmega32U4 prevede o interfata UART TTL
(5V) seriala de comunicare, care este disponibila pe pinii digitali 0 (RX) și 1 (TX).
32U4, de asemenea, permite comunicarea seriala (CDC) pe USB și apare ca un
port COM virtual pentru software-ul de pe calculator. Cipul, de asemenea,
actioneaza ca un dispozitiv complet de viteză USB 2.0, folosind standardul de
drivere USB COM. Software-ul include un monitor Arduino serial care permite
monitorizarea datelor simple de text care urmează să fie trimise la/ și de la
placuta Arduino. LED-urile RX și TX de pe placuta vor clipi atunci când se
transmit date prin intermediul conexiunii USB la calculator (dar nu și pentru
comunicarea seriala de pe pinii 0 și 1).
Biblioteca Serialport permite comunicarea seriala pe oricare dintre pini digitali a
lui Leonardo.
ATmega32U4 sprijină, de asemenea comunicare I2C (DST), și SPI. Software-ul
Arduino include o bibliotecă pentru a simplifica utilizarea bus-ul I2C de
asemenea are documentatie aferenta pentru portul SPI.
Leonardo apare ca o tastatură și mouse generic, si poate fi programat pentru a
controla aceste dispozitive de intrare folosind clase de tastatura si mouse.
Programare
Leonardo poate fi programat cu software-ul Arduino .
ATmega32U4 pe Leonardo Arduino vine preburned cu un bootloader care
permite incarcarea de cod nou fără utilizarea unui programator hardware extern.
Acesta comunică folosind protocolul AVR109.

Reset automat(Software) și inițiere Bootloader


Mai degraba decat sa folosim resetul hardware de la buton putems sa-l folosim
pe cel software, Leonardo este conceput într-un mod care îi permite să fie
resetat prin software-ul care rulează pe un calculator conectat. Resetarea se
declanșează atunci când portul serial virtual (CDC) / portul COM este deschis la
baud 1200 și apoi închis. Atunci când se întâmplă acest lucru, procesorul se va
reseta, si intrerupe conexiunea USB la computer (ceea ce înseamnă că serial
virtual / port COM va dispărea). După reseteare procesor, bootloader începe,
rămânând activ pentru aproximativ 8 secunde. Bootloader poate fi, de
asemenea, inițiat prin apăsarea butonului de resetare de pe Leonardo. Rețineți
că atunci când porniti prima data placuta, aceasta va sari direct la schita de
utilizator, dacă este prezenta, mai degrabă decât inițierea bootloader.
Din cauza modului în care se ocupă Leonardo de reset cel mai bine este să
lăsați software-ul Arduino sa incerce sa inițieze resetarea înainte de încărcare,
mai ales dacă avem obiceiul de a apăsa butonului de resetare înainte de
încărcare ca si la alte placi. În cazul în care software-ul nu se poate reseta placa
puteți începe întotdeauna bootloader apăsând butonul de resetare de pe placuta.

USB protectie supracurent.


Leonardo are un polyfuse resetabil care protejeaza porturile USB al computerului
de scurturi și supracurenti. Deși cele mai multe calculatoare au protectia proprie,
siguranța ofera un plus de protecție. În cazul în care mai mult de 500 mA este
aplicat la portul USB, siguranta va intrerupe în mod automat conexiunea, pana
cauza va fi indepartata.

Caracteristici fizice
Lungimea si latimea maxima a PCB-ului Leonardo este de 6.8 și 5.3 cm, cu
conector USB și mufa de alimentare se extinde dincolo de fosta dimensiune.
Patru orificii pentru suruburi permit placutei a fi montata pe alta suprafata.
Schema Arduino
Imagine arduino

Schema Peak detector


Descriere modul amplificare

Dupa cum ne este prezentata si in schema de mai sus , avem intarea audio
mono pe intrarea neinversoare a amplifiactorului operational . Astfel ca factorul
de amplificare va fi redat de Re si de Ri dupa cum urmeaza A=- Re/Ri unde A
este factorul de amplificare , iar tensiunea de iesire a amplificatorului operational
va fi Uout= Uinx (- Re/Ri). Deci putem spune ca cu ajutorul potentiometrului de 10k
ohm putem ajusta amplificarea finala de pe iesirea operationalului Lm234.
Tensiunea de alimentare a amplificatorului este data de un AC/DC converter
reglabil setata la 5 V. Condesatorul electrolitic de 10uF va fi reduce componenta
continua dupa amplificare iar capacitatea echivalenta de 20nF va reduce
zgomotul de pe iesire. Divizorul rezistiv de la intare are rol de distributie uniforma
a tensiunii aplicate astfel pe fiecare resistor vom avea aplicata o tensiune de
2,5V iar punctul comun va fi cel de Gnd respectiv masa intrarii audio si a
placutei de dezvoltare.

Divizorul rezisitiv de iesire are rol de distributie uniforma a semnalului aplicat pe


intrarea anloaga A0 a placutei de dezvoltare.

Configuratie pini amplificator operational Lm324

ADC- Conversia analog numerica

Conversia analog numerica a microcontrolerului se face in 10biti astfel vom avea


1024 de nivele redate de valori numerice zecimale pe o tensiune de +-5v.
Functionalitate cod  Semnale iesire (optice , electrice)

int sensorPin = A0; // selecteaza intrarea A0 ca input analog

int ledPin = 13; // selecteaza pinul LED -ului

int sensorValue = 0; // variabla de stocarea a valori ADC

void setup() {

// deschide portul serial la viteza 9600 bps:

Serial.begin(9600);

// declarare pin led ca si OUTPUT:

pinMode(ledPin, OUTPUT);

void loop() {

// citire valoare adc:


sensorValue = analogRead(sensorPin);

// print it out in many formats:

Serial.println(analogValue);

// aprinde ledul:

digitalWrite(ledPin, HIGH);

// opreste programul <sensorValue> in milisecunde:

delay(sensorValue);

// stinge ledul:
digitalWrite(ledPin, LOW);

// opreste programul <sensorValue> millisecunde:

delay(sensorValue);

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