Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:lab:lab0-2021 [2022/02/28 18:34]
robert_mihai.lica [3. Let's get to work]
pm:lab:lab0-2021 [2022/03/01 12:38] (current)
dan.tudose
Line 5: Line 5:
   * 14. I/O-Ports - pag. 58   * 14. I/O-Ports - pag. 58
  
-===== 1. Introducere ​=====+===== 1. Ce este un microcontroller? ​=====
  
-=== 1.1De ce? ===+Un microcontroller(µC) este o componentă electronică care integrează un microprocesor şi dispozitive periferice, punându-se accent pe un cost de producție mic și un consum energetic redus, altfel spus pe optimizarea aplicației 
 +Principala diferenţă dintre un microcontroller (µC) şi un microprocesor (µP) o constituie faptul că un µC integrează atât unitatea de procesare cât și memorie de program, memorie de date, interfeţe de intrare-ieşire și periferice.
  
-**I**: Ce facem noi aici? Unde se foloseste ce invatam? Chiar util?+Un µC operează la frecvenţreduse, în general la zeci sau sute de MHz. Cu toate acestea, microcontroller-ele sunt utilizate într-o gamă largă de aplicaţii în diverse domenii. Dispozitivele unde µC sunt utilizate pot fi produse de uz general (mașini de spălat, frigidere, automate de cafea), sisteme industriale dedicate (relee de protecție, controllere industriale,​ sisteme de tip interfață om-mașină - HMI ), sisteme din industria aerospaţială și multe altele.
  
-**R**: Well, ca sa spunem pe scurt: "​multe"​"peste tot" si "​da";​ ar fi raspunsuriledar mai bine o luam pe un exemplu.+În funcție de tipul aplicațiilor pentru care sunt dedicate acesteamajoritatea µC nu au o magistrală externă de adrese sau date deoarece toate memoriile utilizate (volatile și nevolatile) sunt interne, ducând la integrarea acestora în capsule cu un număr mic de pini şi reduse ​ca dimensiuniceea ce reduce costurile de producţie și consumul energetic.  
 +Există desigur și microcontrollere care furnizează magistrale externe pentru date și adrese (multiplexate în timp sau magistrale dedicate) în scopul interfațării memoriilor externe (RAMFLASH, ROM)
  
-Tocmai ti-ai construit un nou PC si i-ai pus si RGB pe RAMpe ventilatoarepe carcasa, o gramadaAcum vine intrebarea, cine "​apasa"​ butoanele astfel incat culorile sa iasa asa cum le pui tu in software? CPU-ul sa stea el si sa aiba grija sa schimbe culorile? Dupa mine cam o irosire ​de resurse. Aici intervine un microcontroller! E un procesor mai micmai simplistcu un task bine determinat in sistemTreaba lui in cazul nostru este sa controleze RGB-ul intreaga lui viata.+**Cele mai întâlnite structuri din circuitul integrat al unui µC sunt următoarele:​** 
 +    * Unitatea centrală de procesare (//µP core//) cu o arhitectură care poate fi pe 81632 sau 64 de biţi. 
 +    * Memorie de date volatilă (RAM) și/sau non-volatilă (Flash sau EEPROM) 
 +    * Memorie de program non-volatilă (Flash sau EEPROM) 
 +    * Porturi digitale de intrare-ieşire de uz general (GPIO - General Purpose Input Output) 
 +    * Interfeţseriale ​de comunicație (USARTSPII2C, PCM, USB, SDIO etc.
 +    * Interfețe ethernet 
 +    * Interfețe pentru afișaj grafic (LVDS, HDMI sau alte protocoale dedicate controlului afișajelor LCD) 
 +    * Timere (cu rol intern, sau utilizate în generarea semnalelor periodice ​-ex: PWM-, sau ca watchdog) 
 +    * Convertoare analog-digitale și digital-analogice,​ front-end-uri analogice și alte circuite dedicate semnalelor analogice 
 +    * Sursă de tensiune integrată 
 +    * Interfață pentru programare şi debugging
  
-=== 1.2Ce e un microcontroller (µC)? ===+<note tip> 
 +Un **periferic** reprezintă orice dispozitiv, intern sau extern, care se conectează la un sistem de calcul și îi extinde funcționalitatea de bazăÎn cazul microcontroller-ului,​ există o serie de astfel de periferice incluse direct în circuitul integrat (cele menționate mai sus)Deși nu seamănă cu perifericele unui PC (monitor, placă grafică, imprimantă,​ tastatură, mouse, etc.), fără ele microcontroller-ul nu ar putea interacționa cu mediul exterior. Mai mult, perifericele ne ajută să conectăm alte elemente mai performante la controller si sa îi putem oferi funcționalități similare unui sistem PC (conexiune la internet, linie de date USB, display grafic etc.) 
 +</​note>​
  
-TLDRun calculator intr-un cipMai in detaliuel este un circuit integrat ce reunește o unitate ​de procesare ​(CPU), memorii(volatile RAMnevolatile EEPROMFlash, ROMși diverse periferice ce îi permite acestuia să comunice cu mediul extern.+**Costul unui µC depinde în mare măsură de** numărul de periferice integratefrecvența de lucru a procesorului,​ cantitatea de memorie și alți parametri amintiți mai susCu cât caracteristicile acestuia sunt mai avansatecu atât crește prețul ​de producție. Arhitecturile de µC pe piaţă la ora actuală variază în limite ​ largi, de la chip-uri cu doar 2 pini de I/O până la procesoare digitale de semnal ​(DSPsau procesoare cu arhitecturi avansate pe 32 sau chiar 64 de biţi (ex: ARMPIC32STM32 sau AVR32).
  
-=== 1.3. µC in the wild === +<note tip> 
- +**În concluzie,** un microcontroller este un circuit integrat ce reunește o unitate de procesare (CPU)memorii(volatile RAMnevolatile EEPROMFlash, ROM) și diverse periferice ce îi permite acestuia să comunice cu mediul extern 
-Le gasim in diferite dispozitive precum: telefoaneelectro-casnicesatelitiavioanein fabrici etc. Există o gamă largă de microcontrollere disponibile și acestea se aleg în funcție de aplicație, având în vedere mai ales optimizarea costului și a consumului energetic pentru dispozitivul unde µC urmează a fi folosit.+Microcontrollerele sunt utilizate în diverse aplicații, din diverse domenii, de la aplicații casnice și industriale până la aviație și sateliți. 
 +Există o gamă largă de microcontrollere disponibile și acestea se aleg în funcție de aplicație, având în vedere mai ales optimizarea costului și a consumului energetic pentru dispozitivul unde µC urmează a fi folosit. 
 +</​note>​ 
 +====  Ce pot face cu un microcontroller?​ ====
  
-<HTML> +<hidden>Toata sectiunea asta as muta-o la sfarsitul paginii, gen la referinte. In locul in care se afla in momentul ​de fata as mentiona doar ca sunt o serie de exemple date in josul paginii (unde vom muta asta).</hidden>
-<​details>​ +
-</​HTML>​ +
-<​html><​summary></​html>​ Exemple ​de proiecte <​html></​summary>​</html>+
  
-{{:​pm:​lab:​lab0:​bird_tracking2.jpg?​direct&​100| [1] Bird tracking}} +{{:​pm:​lab:​lab0:​bike_turn_signal.jpg?​direct&​100|[1] Turn signal biking jacket}} 
-{{:​pm:​lab:​lab0:​bird_tracking1.png?​direct&​100| [2] Bird tracking}} +{{:​pm:​lab:​lab0:​bird_tracking2.jpg?​direct&​100|[2] Bird tracking}} 
-{{:​pm:​lab:​lab0:​mini_quad.jpg?​direct&​100| [3] Palm size quad-copter}} +{{:​pm:​lab:​lab0:​bird_tracking1.png?​direct&​100|[3] Bird tracking}} 
-{{:​pm:​lab:​lab0:​exemple:​robot2.jpg?​direct&​100|[4] Robot line follower (Tare N' Bară)}} +{{:​pm:​lab:​lab0:​clock.jpg?​direct&​80|[4] The word clock}} 
-{{:​pm:​lab:​lab0:​exemple:​robot3.jpg?​direct&​100|[5] Robot ce joacă fotbal (IronFoot)}} +{{:​pm:​lab:​lab0:​mini_quad.jpg?​direct&​100| [5] Palm size quad-copter}} 
-{{:​pm:​lab:​lab0:​exemple:​robot4.jpg?​direct&​100|[6] Robot submarin (R0X1)}} +{{:​pm:​lab:​lab0:​exemple:​robot1.jpg?​direct&​100|[6] Robot microsumo (RoboWarrior)}} 
-{{:​pm:​lab:​lab0:​exemple:​self_balancing_skate.jpg?​direct&​100|[7] Self-balancing skateboard}}+{{:​pm:​lab:​lab0:​exemple:​robot2.jpg?​direct&​100|[7] Robot line follower (Tare N' Bară)}} 
 +{{:​pm:​lab:​lab0:​exemple:​robot3.jpg?​direct&​100|[8] Robot ce joacă fotbal (IronFoot)}} 
 +{{:​pm:​lab:​lab0:​exemple:​robot4.jpg?​direct&​100|[9] Robot submarin (R0X1)}} 
 +{{:​pm:​lab:​lab0:​exemple:​robot5.jpg?​direct&​60|[10] Robot vânător de mamuți (Many the mammoth hunter)}} 
 +{{:​pm:​lab:​lab0:​exemple:​self_balancing_skate.jpg?​direct&​100|[11] Self-balancing skateboard}} 
 +{{:​pm:​lab:​lab0:​exemple:​sparrowv32.jpg?​direct&​100|[12] Nod senzorial (Sparrow)}}
  
-  * [[https://​www.northstarst.com/​|[1, 2] - Bird tracking]] +  ​* [[http://​www.instructables.com/​id/​turn-signal-biking-jacket/​|[1] - Turn signal biking jacket]] 
-  * [[http://​www.rcgroups.com/​forums/​showthread.php?​t=1335765|[3] - Palm size quad-copter]] +  ​* [[https://​www.northstarst.com/​|[2, 3] - Bird tracking]] 
-  * [4] - Robot line follower (Tare N' Bară) +  * [[http://​www.instructables.com/​id/​The-Word-Clock-Arduino-version/​|[4] - The word clock]] 
-  * [5] - Robot ce joacă fotbal (IronFoot) +  * [[http://​www.rcgroups.com/​forums/​showthread.php?​t=1335765|[5] - Palm size quad-copter]] 
-  * [6] - Robot submarin (R0X1) +  * [6] - Robot microsumo (RoboWarrior) 
-  * [[http://​www.instructables.com/​id/​Easy-build-self-balancing-skateboardrobotsegway-/​|[7] - Self-balancing skateboard]]+  * [7] - Robot line follower (Tare N' Bară) 
 +  * [8] - Robot ce joacă fotbal (IronFoot) 
 +  * [9] - Robot submarin (R0X1
 +  * [10] - Robot vânător de mamuți (Many the mammoth hunter
 +  * [[http://​www.instructables.com/​id/​Easy-build-self-balancing-skateboardrobotsegway-/​|[11] - Self-balancing skateboard]] 
 +  * [12] - Nod senzorial (Sparrow)
  
 Pentru alte exemple, puteți începe căutarea de aici: Pentru alte exemple, puteți începe căutarea de aici:
 [[https://​www.hackster.io/​projects/​tags/​microcontroller]] [[https://​www.hackster.io/​projects/​tags/​microcontroller]]
- 
-<​HTML>​ 
-</​details>​ 
-</​HTML>​ 
- 
-=== 1.4. Ce gasim intr-un µC? === 
- 
-  * **Unitatea centrală de procesare** (µP core) cu o arhitectură care poate fi pe 8, 16, 32 sau 64 de biţi 
-  * Memorie de date volatilă (**RAM**) și/sau non-volatilă (Flash sau EEPROM) 
-  * Memorie de program non-volatilă (**Flash** sau **EEPROM**) 
-  * Porturi digitale de intrare-ieşire de uz general (**GPIO** - General Purpose Input Output) 
-  * Interfeţe seriale de comunicație (**USART**, **SPI**, **I2C**, PCM, **USB**, SDIO etc.) 
-<​HTML>​ 
-<​details>​ 
-</​HTML>​ 
-<​html><​summary></​html>​ More <​html></​summary></​html>​ 
-  * Interfețe ethernet 
-  * Interfețe pentru afișaj grafic (LVDS, **HDMI** sau alte protocoale dedicate controlului afișajelor LCD) 
-  * Timere (cu rol intern, sau utilizate în generarea semnalelor periodice -ex: PWM-, sau ca watchdog) 
-  * Convertoare analog-digitale și digital-analogice (**ADC**, **DAC**), front-end-uri analogice și alte circuite dedicate semnalelor analogice 
-  * Sursă de tensiune integrată 
-  * Interfață pentru programare şi debugging 
-<​HTML>​ 
-</​details>​ 
-</​HTML>​ 
-<​html></​br></​html>​ 
- 
-**Perifericele** reprezintă orice dispozitiv, intern sau extern, care se conectează la un sistem de calcul și îi extinde funcționalitatea de bază. În cazul microcontroller-ului,​ există o serie de astfel de periferice incluse direct în circuitul integrat (exemple mai sus). Deși nu seamănă cu perifericele unui PC (monitor, placă grafică, tastatură, mouse etc.), fără ele microcontroller-ul nu ar putea interacționa cu mediul exterior. Mai mult, perifericele ne ajută să conectăm alte elemente mai performante la controller si sa îi putem oferi funcționalități similare unui sistem PC (conexiune la internet, linie de date USB, display grafic etc.) 
- 
- 
 ===== 2. Microchip (Atmel) AVR ===== ===== 2. Microchip (Atmel) AVR =====
  
-Pe parcursul semestrului vom lucra cu microcontrollere din familia ​AVR de la Microchip. Acestea au arhitectură Harvard pe 8 biţi şi set redus de instrucţiuni (RISC).+Famila ​AVR de la Microchip ​este formată din microcontrollere cu arhitectură Harvard pe 8 biţi şi set redus de instrucţiuni (RISC).
  
 <​hidden>​ <​hidden>​
Line 100: Line 95:
 | * 1-8 KB memorie de program \\ * capsulă de 8 până la 32 pini \\ * set limitat de periferice \\   * 4-256 KB memorie de program | * capsulă de 28 până la 100 de pini \\ * set extins de instrucţiuni (instrucţiuni pentru înmulţire şi adresare indirectă) \\  * set extins de periferice | * 16-256 KB memorie de program \\ * capsulă de 44 până la 100 de pini \\ * interfeţe performante extinse, ca DMA, "Event System",​ şi support pentru criptografie \\ * set extins se periferice | * megaAVR cu funcţii speciale, care nu sunt prezente la familia AVR, cum ar fi controller de LCD, controller USB, CAN etc. \\ * FPSLIC (Field Programmable System Level Integrated Circuit), un core AVR integrat cu un FPGA. | | * 1-8 KB memorie de program \\ * capsulă de 8 până la 32 pini \\ * set limitat de periferice \\   * 4-256 KB memorie de program | * capsulă de 28 până la 100 de pini \\ * set extins de instrucţiuni (instrucţiuni pentru înmulţire şi adresare indirectă) \\  * set extins de periferice | * 16-256 KB memorie de program \\ * capsulă de 44 până la 100 de pini \\ * interfeţe performante extinse, ca DMA, "Event System",​ şi support pentru criptografie \\ * set extins se periferice | * megaAVR cu funcţii speciale, care nu sunt prezente la familia AVR, cum ar fi controller de LCD, controller USB, CAN etc. \\ * FPSLIC (Field Programmable System Level Integrated Circuit), un core AVR integrat cu un FPGA. |
 </​hidden>​ </​hidden>​
 +Memoriile Flash, EEPROM, şi SRAM sunt integrate în acelaşi chip, înlăturând nevoia de memorie externă. Programul este format din instrucţiuni de 16 biţi lungime care sunt stocate în memoria Flash non-volatilă. Mărimea memoriei de program este indicată de numele componentei respective. De exemplu, ATmega128 are 128kB de memorie Flash. Spaţiul de adresa este format din registrele generale, registrele de I/O şi memoria SRAM. Sunt în total 32 de registre generale a câte 8 biţi.
  
-<note info> +AVR au o unitate de execuţie în bandă de asamblare cu două niveluri, acest lucru permiţând că următoarea instrucţiune să fie adusă din memorie (fetch) în timp ce instrucţiunea curentă este în execuţie. Majoritatea instrucţiunilor se execută într-un singur ciclu de instrucţiune,​ acest lucru permiţând atingerea unui throughput de 1MIPS pe MHz. 
-Va mai amintiti de banda de asamblare (pipeline)? Haideti sa va dam un "fun fact". µC AVR au o unitate de execuţie în bandă de asamblare cu două niveluri, acest lucru permiţând că următoarea instrucţiune să fie adusă din memorie (fetch) în timp ce instrucţiunea curentă este în execuţie. Majoritatea instrucţiunilor se execută într-un singur ciclu de instrucţiune,​ acest lucru permiţând atingerea unui throughput de 1MIPS pe MHz. + 
-</​note>​ +==== 2.1. ATmega328P ​====
-=== 2.1. ATmega328P ===+
  
 {{ :​pm:​lab:​lab0:​atmel-atmega324p-20pu.jpg?​nolink&​250 | atmega324| Un µC ATmega324 în capsulă PDIP}} {{ :​pm:​lab:​lab0:​atmel-atmega324p-20pu.jpg?​nolink&​250 | atmega324| Un µC ATmega324 în capsulă PDIP}}
  
-Cu micutul acesta vom lucra noi. Este un microcontroller pe 8 biți din familia megaAVR. Registrele şi magistrala internă de date sunt pe 8 biţi.+În cadrul laboratoarelor și a proiectului de PM, veți utiliza ATmega328P, ​un microcontroller pe 8 biți din familia megaAVR. Registrele şi magistrala internă de date sunt pe 8 biţi. ​
  
- +===  Caracteristici generale ​ ===
-<​HTML>​ +
-<​details>​ +
-</​HTML>​ +
-<​html><​summary></​html>​ Specificatiile µC-ului <​html></​summary></​html>​+
  
   * 32 KB Flash (determină dimensiunea maximă a programului care poate fi executat)   * 32 KB Flash (determină dimensiunea maximă a programului care poate fi executat)
Line 128: Line 119:
   * Interfaţe de programare ISP și debug JTAG   * Interfaţe de programare ISP și debug JTAG
  
-<​HTML>​ +Perifericele interne chip-ului pot fi accesate din exterior prin intermediul pinilor. Capsula microcontroller-ului are 28 de pini (prezentați mai jos), dintre care 5 sunt pentru alimentare sau funcții auxiliare, iar 23 sunt pentru I/O. GPIO-urile sunt împărțite în patru porturi (B, C și D) avand câte 8 pini PORTB si PORTD, iar PORTC 7.
-</details>​ +
-</​HTML>​ +
-<​html></​br></​html>​+
  
-La acest microcontroller vom invata sa ii configuram pinii si sa interactionam cu mediul exterior din cod. Acesta are 28 de pini (prezentați mai jos), dintre care 5 sunt pentru alimentare sau funcții auxiliare, iar 23 sunt pentru I/O. microcontrollerul are patru porturi: A, B, C si D; din care doar ultimele 3 sunt accesibile noua prin pini externi.+Pentru mai multe detalii, consultați datasheet-ul ​(documentația tehnică sumarizatăa microcontrollerului.
  
 {{ :​pm:​lab:​ic-atmega328-pu-3.jpg?​nolink&​400 |Configurarea pinilor pentru ATmega328P}} {{ :​pm:​lab:​ic-atmega328-pu-3.jpg?​nolink&​400 |Configurarea pinilor pentru ATmega328P}}
  
-<note info> 
-Pentru mai multe detalii, mereu puteti consulta [[https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|datasheet-ul]] (documentația tehnică sumarizată) a microcontrollerului. :) 
-</​note>​ 
  
-=== 2.2. Placuta de laborator ​===+===== 3Arduino =====
  
-Fundatia ​Arduino ​a creat seturi de placute de dezvoltare ​open source, placute pe care le vom folosi si noi la laborator. O placuta ​de dezvoltare ​este un circuit ​care ne pune la dispozitie facil pinii µC-ului ​de pe ea si care contine cirtuite ​de alimentare, de protectie si eventual programatorul µC-ului.+Arduino ​este o companie ​open-source care produce atât plăcuțe ​de dezvoltare ​bazate pe microcontrolere,​ cât și partea de software destinată funcționării și programării acestora. Pe lângă acestea include și o comunitate uriașă ​care se ocupă cu creația și distribuirea ​de proiecte ​care au ca scop crearea ​de dispozitive care pot sesiza și controla diverse activități sau procese în lumea reală.
  
-<note info> +==== 3.1Hardware ====
-Programatorul este un cip special, chiar un microcontroller uneori, care are rolul sa incarce codul in memoria µCNu putem lega µC-ul direct la firele de USB de la un PC, avem nevoie de cineva sa "​traduca"​ informatia respectiva. +
-</​note>​+
  
-Pinout ​Arduino ​UNO: +O plăcuță ​Arduino ​este compusă dintr-un microcontroler Atmel AVR de 8-, 16sau 32-biți (deși începând cu 2015 s-au folosit microcontrolere de la alți producători) cu componente complementare care facilitează programarea și încorporarea în alte circuite
-{{ :​pm:​lab:​arduino-uno-pinout-diagram.png?​nolink&​600 | Pionout Arduini UNO}}+
  
-=== 2.3Framework-ul Arduino ​===+Multe plăcuțe includ un regulator liniar de 5 V și un oscilator cu cuarț de 16 MHz (sau un rezonator ceramic în unele variante), deși anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 MHz și nu necesită regulator, datorită restricțiilor de formăUn microcontroler instalat pe Arduino vine preprogramat cu un bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație cu alte dispozitive care necesită programatoare externeAcest aspect face Arduino o soluție simplă, permițând programarea de pe orice computer ordinar. În prezent, bootloader-ul optiboot este bootloader-ul implicit instalat pe Arduino ​UNO.
  
-Desi la laborator va vom pune sa lucrati direct ​cu adrese de memorie pentru ​configura ​pinii si a ii controlava vom arata cum sa folositi si un framework numit Arduino. Acesta este scris in C++ si este practic o biblioteca cu functii ajutatoare si headere (fisiere .h) cu define-uri ​pentru ​fiecare procesor in parte. Ca orice nivel de abstractizare in plus, acesta face dezvoltarea mai usoara, dar aduce si un performance penalty de chiar si 20 de ori mai incet uneori. +PlăcuțArduino are expuși mulți dintre ​pinii de intrare/​ieșire ai microcontrolerului, pentru ​ca aceștia să fie folosiți ​de alte circuite.
-===== 3. Let's get to work =====+
  
-=== 3.1. Actuatori si Traductori (Senzori) === +{{ :pm:lab:arduino-uno-pinout-diagram.png?​nolink&​600 Pionout Arduini UNO}}
- +
-Pentru a putea intefața cu mediul exterior, sunt utilizate diferite componente electronice care au rol fie de actuator (modifică starea mediului exterior) sau de traductor/​senzor (sunt influențate de mediul exterior și oferă informații microcontroller-ului despre diverși parametri). +
- +
-**Exemplu actuatori**:​ +
- +
-  * Ventilatoare;​ +
-  * Indicatoare sonore - buzzere; +
-  * Indicatoare luminoase;​ +
-  * Rezistențe de încălzire. +
-<note important>​ +
-Uneori pentru a putea activa un actuator, este nevoie de un element de acționare. Spre exemplu, daca am dori sa pornim un motor, µC-ul doar da o comanda logica de start la un tranzistor ce se va deschide si va lasa un curent mare sa treaca prin el (aici prin "​curent mare" comparam fata de maximul de cativa miliamperi pe care ii poate scoate un µC). +
-</​note>​ +
- +
-**Exemplu Senzori**:​ +
- +
-  * Butoane;  +
-  * Fotorezistori - rezistenta lui electrica este influentata de cantitatea de lumina;  +
-  * Termistori - rezistenta lui electrica este influentata de temperatura. +
-<note important>​ +
-În funcție de tipul traductoarelor,​ acestea pot avea nevoie de prelucrarea semnalului înainte ca acesta să fie preluat de µC (signal conditioning) - de exemplu fotorezistorul trebuie folosit într-un montaj cu divizor de tensiune sau cu sursă de curent -, sau pot fi conectate direct la microcontroller - de exemplu butonul. +
-</​note>​ +
- +
-=== 3.1.1. LEDs === +
- +
-LED-urile - Light Emitting Diode - numite și diode electroluminesciente emit lumină când ele sunt polarizate direct. A nu se confunca cu becurile deoarece au metode de functionare radical diferite. +
- +
-<​HTML>​ +
-<​details>​ +
-</​HTML>​ +
-<​html><​summary></​html>​ In depth <​html></​summary></​html>​ +
-În funcție de semiconductorii care sunt utilizați în construcție,​ și de plasticul ce are rol de lentilă de dispersie și filtru optic, LED-urile pot emite lumină în diferite culori. Nu confundați LED-urile cu becurile! În timp ce becurile emit lumina prin încalzirea unui filament de tungsten la temperaturi foarte mari, LED-urile emit lumina trecând un curent printr-un material semiconductor (joncțiune p-n). Spre deosebire de becuri, al căror randament este de sub 5% - majoritatea energiei primite de ele se pierde prin efect caloric -, LED-urile au un randament de transformare a energiei electrice în energie luminoasă mult mai mare. +
-<​HTML>​ +
-</​details>​ +
-</​HTML>​ +
-<​html></​br></​html>​ +
- +
-LED-urile pot fi utilizate pe post de indicator luminos (adesea utilizate în diferite aparate pentru a semnaliza faptul că aparatul este pornit și realizează un anumit lucru), sau pentru iluminare, caz în care sunt utilizate LED-uri de putere. În cadrul laboratorului LED-urile sunt utilizate pentru a indica starea unui pin. +
- +
-== Calculul rezistenței de limitare a curentului == +
- +
-LED-urile sunt diode, așadar, curentul prin acestea crește exponențial cu creșterea tensiunii aplicate. Pentru a utiliza un LED pentru indicarea stării unui pin (mai degrabă spus pentru a indica prezența de tensiune), curentul prin LED trebuie limitat. Aceasta se poate realiza în cel mai simplu mod prin înserierea unei rezistențe cu LED-ul. +
- +
-Un LED este proiectat să opereze la un curent nominal (ex: 10mA). Căderea de tensiune pe LED urile indicatoare,​ de mică putere, la acest curent este dată de chimia LED-ului, care da si culoarea acestuia. In cadrul laboratorului,​ deoarece folosim un LED de un curent asa mic, putem sa il alimentam direct de pe pinii logici ai µC-ului. +
- +
-Schema utilizată este următoarea:​ +
- +
-{{ :pm:lab:lab0:​r_limit.png?​nolink&​400 | Schema de lucru și calculul rezistenței de limitare a curentului prin LED}} +
- +
-**Solutie**:​ Dacă alimentarea microcontroller-ului este de 5V pentru un LED roșu ce dorim să îl folosim la 10mA, specificat de producător cu o cădere de tensiune de 1.7V, trebuie să folosim o rezistență de 330 de ohmi. +
- +
-=== 3.1.2. Butoane === +
- +
-Cel mai simplu mod de interacțiune al utilizatorului cu un microcontroller îl constituie folosirea butoanelor. Modul de conectare al unui push-button in acest laborator este dat în figura de mai jos: +
- +
-{{ :​pm:​lab:​lab0:​conectare_buton.png?​nolink&​400 Conectarea unui push-button:​ a) incorect, cu intrare flotantă, b) corect, cu rezistență de pull-up}} +
-<​html><​center>​Conectarea unui push-button:​ a) incorect, cu intrare flotantă, b) corect, cu rezistență de pull-up</​center></​html>​ +
- +
-**a)** Arată un buton conectat la pinul PD0 al µC. La apăsarea butonului, intrarea PD0 va fi legată la GND, deci va fi în starea logică “0”. Acest mod de legare este incorect deoarece atunci când butonul nu este apăsat, intrarea se află **într-o stare nedefinită** (ca și cum ar fi lăsată în aer), ea nefiind conectată nici la GND, nici la Vcc! Această stare se numește stare de impedanță mărită și nu poate fi citită de către circuitele interne ale µC deoarece un bit dintr-un registru poate să ia doar valorile 0 sau 1. În practică, citirea unei intrări în stare de impedanță mărită va produce un rezultat de 1 sau 0 în funcție de condițiile de mediu. Spre exemplu, dacă apropiem degetul de acea intrare, citirea va fi 1, iar, daca îndepărtăm degetul, citirea va fi 0. +
- +
-**b)** Arată modul corect de conectare al butonului, folosind o **rezistență de pull-up** între pinul de intrare și Vcc. Această rezistență are rolul de a aduce intrarea în starea “1” logic atunci când butonul este liber prin “ridicarea” potențialului liniei la Vcc. Alternativ, se poate folosi o **rezistență de pull-down** (conectată la GND), caz în care intrarea este ținută in starea logică “0” cât timpul butonul nu este apăsat.+
  
-**La laborator**:​ Pentru a economisi spațiu exterior, în µC-ul ATmega328P, aceste rezistențe au fost incluse în interiorul circuitului integrat. Inițial ele sunt dezactivate iar activarea acestora se poate face prin software. 
 ==== 3.2. Software ==== ==== 3.2. Software ====
  
pm/lab/lab0-2021.1646066071.txt.gz · Last modified: 2022/02/28 18:34 by robert_mihai.lica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0