Ideea principala a fost crearea unui senzor de presiune, dar dupa ce m-am documentat, am gasit niste exemple mai interesante de la care m-am inspirat. Astfel, tinand cont ca un senzor de presiune ar fi costat in jur de 300 RON, am preferat sa folosesc un FSR (force sensitive resistor) care masoara presiunea de apasare, iar in functie de valorile intoarse de acesta, voi aprinde 1-2-…-7 leduri.
Utilitate… nu-mi pot imagina o utilitate pentru proiect, alta decat amuzament si demosntrarea functionarii FSR-ului.
Schema bloc a proiectului este:
Module hardware :
Module software :
Aici puneţi tot ce ţine de hardware design:
Piesele achiziționate sunt urmatoarele:
Schema placii de baza:
Conectarea FSR si a ledurilor se va face dupa schema urmatoare:
LED-urile vor fi conectate fiecare la cate un pin de pe portul A al microcontroller-ului.
FSR-ul va fi conectat la pinul A0 al microcontroller-ului si va fi prelucrat convertor de semnal, care va prelua semnalul analog de la dispozitiv, si-l va transforma in digital, trimitandu-l apoi la microcontroller.
OBSERVATII. Valorile tensiunii analogice aproximative a FSR-ului sunt dupa cum se vede in tabel:
In continuare voi prezenta codul implementat pana acum, si anume, testarea FSR-ului pe un singur LED. Practic, in functie de forta inregistrata de FSR, intensitatea acestui LED va fi mai mare sau mai mica.
int fsrAnalogPin = 40; // FSR is connected to analog 0 int LEDpin = 41; // connect Red LED to pin 40 (PA1 - PWM pin) int fsrReading; // the analog reading from the FSR resistor divider int LEDbrightness; void setup(void) { Serial.begin(9600); // We'll send debugging information via the Serial monitor pinMode(LEDpin, OUTPUT); } void loop(void) { fsrReading = analogRead(fsrAnalogPin); Serial.print("Analog reading = "); Serial.println(fsrReading); // we'll need to change the range from the analog reading (0-1023) down to the range // used by analogWrite (0-255) with map! LEDbrightness = map(fsrReading, 0, 1023, 0, 255); // LED gets brighter the harder you press analogWrite(LEDpin, LEDbrightness); delay(100); }
In continuare ramane de modificat codul, astfel incat, in loc sa se schimbe intensitatea unui singur LED, va trebui sa se aprinda mai multe sau mai putine LED-uri din cele 8 conectate pe portul A al microcontroller-ului.
Pana acum am conectat doar un singur LED si am reusit sa-i schimb intensitatea in functie de forta inregistrata de FSR.
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună .
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.
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
http://protolab.pbworks.com/TutorialSensors
http://www.instructables.com - tutoriale pt FSR