Senzor Lumina Profesional - TSL235R

31,00 Lei
Stoc: 1
In stoc

Durata de livrare: 1 zi

Limita stoc
- +
Adauga in cos
Cod Produs: SEN-LUM-06 Ai nevoie de ajutor? 0731 007 832
Adauga la Wishlist Cere informatii
  • Descriere
  • Video
  • Review-uri (7)

Senzorul de lumina TSL235R este o componenta care sesizeaza nivelul de iluminare al mediului extrem de precis (etalonat).
 

Mai exact, acest senzor furnizeaza un semnal dreptunghiular a carui frecventa variaza cu intensitatea luminoasa receptionata de senzor (masurata in uW / cm^2).
 

Circuitul de pe placa adauga un condensator de filtrare care face ca senzorul sa fie foarte precis, interferentele cauzate de alimentare fiind eliminate.

 


 


volatile unsigned long cnt = 0;
unsigned long oldcnt = 0;
unsigned long t = 0;
unsigned long last;

void irq1()
{
  cnt++;
}

void setup() 
{
  Serial.begin(9600);
  Serial.println("START");
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, irq1, RISING);
}

void loop() 
{
  if (millis() - last > 1000)
  {
    last = millis();
    t = cnt;
    unsigned long hz = t - oldcnt;
    Serial.print("FREQ: "); 
    Serial.print(hz);
    Serial.print("t = "); 
    Serial.print((hz+50)/100);  
    Serial.println(" mW/m2");
    oldcnt = t;
  }
}


 

 

 

Cod Arduino

 


/*
 *    FILE: demo01.pde
 *  AUTHOR: Rob Tillaart
 *    DATE: 2011 05 16
 *
 * PURPOSE: prototype TSL235R monitoring  
 *
 * Digital Pin layout ARDUINO
 * =============================
 *  2     IRQ 0    - to TSL235R
 *
 * PIN 1 - GND
 * PIN 2 - VDD - 5V
 * PIN 3 - SIGNAL
 *
 */

volatile unsigned long cnt = 0;
unsigned long oldcnt = 0;
unsigned long t = 0;
unsigned long last;

void irq1()
{
  cnt++;
}

///////////////////////////////////////////////////////////////////
//
// SETUP
//
void setup() 
{
  Serial.begin(115200);
  Serial.println("START");
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, irq1, RISING);
}

///////////////////////////////////////////////////////////////////
//
// MAIN LOOP
//
void loop() 
{
  if (millis() - last > 1000)
  {
    last = millis();
    t = cnt;
    unsigned long hz = t - oldcnt;
    Serial.print("FREQ: "); 
    Serial.print(hz);
    Serial.print("t = "); 
    Serial.print((hz+50)/100);  // +50 == rounding last digit
    Serial.println(" mW/m2");
    oldcnt = t;
  }
}
// END OF FILE

 

Tutorial Arduino 1

Tutorial Arduino 2

Datasheet (PDF)

Viorel [ROBOFUN],

@Dani Salut, Nu cred ca il vei putea folosi cu Raspberry PI, din pacate. Iesirea senzorului este un semnal dreptunghiular care variaza foarte rapid. Nu cred ca porturile GPIO din Raspberry pot citi asa rapid un semnal. Varianta corecta ar fi cu un Arduino conectat la senzor, si conectat si la Rasbperry PI. Viorel

A fost util acest review?

Dani,

salut, Aveti cumva un cod in python pentru acest senzor? In momentul de fata fosesc acest cod, dar am impresia ca nu arata ce trebuie. import RPi.GPIO as GPIO import os import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.IN) #Read from light sensor while True: time.sleep(0.5) num_pulses = 10 # make this longer for more accuracy state = GPIO.input(25) # read current input state while GPIO.input(25) == state: pass # wait for input to switch start = time.time() for i in range(num_pulses): while GPIO.input(25) != state: pass # wait for input to switch again while GPIO.input(25) == state: pass # wait for input to switch again duration = time.time() - start # this is the duration of num_pulses pulses period = duration / num_pulses GPIO.cleanup() Mersi.

A fost util acest review?

Iulian,

@Viorel Am testat varianta ISR(PCINT2_vect-pentru pinii digitali D0-D7). Pot obtine intrerupere pe orice pin acum! ^_^

A fost util acest review?

Viorel [ROBOFUN],

@Iulian Interesant link-ul, nu stiam asta :)

A fost util acest review?

Iulian,

@Viorel Salut Viorel. Multumesc mult pentru raspuns. Intre timp m-am mai documentat si este posibil sa ma folosesc de intrerupere ISR si sa configurez eu intrerupere pentru orice pin. Momentan varianta ta este cea mai buna. Link: http://electronics.stackexchange.com/questions/20351/arduino-and-interrupts-fast-way-to-get-pin-values

A fost util acest review?

Viorel [ROBOFUN],

@Iulian Nu poti muta intreruperea, dar poti folosi un alt pin pentru shield. Ca sa faci asta, indoi pinul de pe shield in afara, astfel incat sa nu mai intre in Arduino (si in felul asta eliberezi pinul 3), apoi infigi un fir tata tata in pinul 3 de pe shield si intr-un alt pin Arduino (in felul asta legi pinul 3 de pe shield cu un alt pin Arduino). Apoi modifici evident in loc de pinul 3 in codul Arduino. Sau folosesti un senzor analogic, este suficient de OK pentru proiectul asta - https://www.robofun.ro/senzor-lumina

A fost util acest review?

Iulian,

Salutare, Lucrez la un robot ce se ghideaza dupa lumina. Componente: - 2 senzori de lumina https://www.robofun.ro/senzori/lumina/senzor-lumina-precis-TSL235R - Arduino Uno + Driver de Motoare: https://www.robofun.ro/shield-motoare-l298-v2 Tutorialele furnizate de voi au fost foarte folositoare. Intrebare: Pentru a putea folosi 2 senzori de lumina cum treuie sa procedez? Problema: Pini Digitali pentru motoare: 3, 5, 6 ,9. Pini Digitali pentru cei 2 senzorii de lumina: 2, 3, deoarece Arduino Uno foloseste intrerupere predefinita hardware pentru senzori numai pe pinii 2(irq0) si 3(irq1). Link: http://www.arduino.cc/en/Reference/AttachInterrupt Cum pot sa schimb, daca este posibil, intreruperea de pe pinul 3 pe alt pin, pentru a nu se suprapune cu pinul 3 folosit pentru motoare? Multumesc!

A fost util acest review?

Scrie un review


Suport clienti Magazinul este deschis luni - vineri, intre orele 11:00 si 17:00.

0731 007 832 contact@robofun.ro
close

Comparare

Trebuie sa mai adaugi cel putin un produs pentru a compara produse.

close

A fost adaugat in wishlist!

A fost sters din wishlist!