Differences

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

Link to this comparison view

pm:prj2022:sgherman:analogmatrixmultiplier [2022/05/27 19:27]
bogdan.circeanu [Hardware Design]
pm:prj2022:sgherman:analogmatrixmultiplier [2022/05/27 19:40] (current)
bogdan.circeanu
Line 38: Line 38:
    * Perfboard    * Perfboard
    * Module DAC    * Module DAC
 +
 +===== Schema Electrica =====
 +
 +{{:​pm:​prj2022:​sgherman:​SCH_BOGDAN_CIRCEANU_336CC.png?​800|}}
  
  
Line 44: Line 48:
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei (firmware):​ +  ​Mediul ​de dezvoltare ​folosit a fost Arduino IDE.
-  ​mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+  * Librarii 3rd-party folosite: DFRobot_MCP4725.h (pentru controlarea modulelor DAC).
  
-<note tip> +  * Github: https://​github.com/​circeanubogdan/​AnalogMatrixMultiplier
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+
 </​note>​ </​note>​
  
-===== Concluzii =====+Datele se introduc de la tastatura: valorile tensiunilor (elemente vector) si valorile pentru digipots (elemente matrice).
  
-===== Download =====+Pentru a transforma datele din numere din intervalul 1-100 in valori pentru digipots (0-255) folosesc urmatoarea functie:
  
-<note warning+<code
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+int val_to_step_digipot(int x
 +  float y = 0.0002 + (float) (x 1* 0.0098 / 99;
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +  float R = 1 y;
-</note>+
  
 +  int val = (int) (R - 100) * 51 / 950;
 +  ​
 +  return val;
 +}
 +</​code>​
 +
 +Pentru a seta valorile in digipot folosesc functia care sa comunice prin I2C:
 +
 +<​code>​
 +void setValue(int l, int value)
 +// sends value '​value'​ to SPI device on CS digital out pin '​l'​
 +{
 +  digitalWrite(l,​ LOW);
 +  SPI.transfer(0);​ // send command byte
 +  SPI.transfer(value);​ // send value (0~255)
 +  digitalWrite(l,​ HIGH);
 +}
 +</​code>​
 +
 +La final, pentru a transforma rezultatul din curent in valoare numerica folosesc functia inversa celei de setare a valorii rezistentei:​
 +
 +<​code>​
 +int current_to_val(float y) {
 +  return (int) ((y - 0.0002) * 99 / 0.0098 + 1);
 +}
 +</​code>​
 +
 +===== Download =====
 +{{:​pm:​prj2022:​sgherman:​proj_pm_bogdan_circeanu_336cc.zip}}
 ===== Jurnal ===== ===== Jurnal =====
  
pm/prj2022/sgherman/analogmatrixmultiplier.1653668863.txt.gz · Last modified: 2022/05/27 19:27 by bogdan.circeanu
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