» Advertenties

Zo 20 Mei 2012, 08:00


LED-sensing is het misbruiken van LED's als photodiodes. In de praktijk zul je zien dat elke led een photodiode is. Als een LED gewoon gepolariseerd is, kathode aan GND en anode via weerstand (330R) naar 5V, licht deze op. Kathode en anode op het zelfde potentiaal (of lager dan Vf), LED brand niet. En de 3de mogelijkheid: LED verkeert om, anode dus negatiever dan kathode. Zet nooit te hoge spanningen omgekeerd op een LED of deze kunnen de vuilbak in. (hoge spanning: >5V) Wanneer de LED omgekeerd staat is de spanning die over de LED staat afhangelijke van de hoeveelheid lichtinval (fotonen).

> Link naar youtube

Een stapje verder, led aan een uC om te bepalen of het licht of donker is. Beide aansluitingen van de LED aan IO-pinnen van de uC zodat deze voorwaarts en omgekeerd gepolariseerd kan worden.
C code -
  1. #define F_CPU 10000000
  2.  
  3. #define LCD_PORT       PORTA
  4. #define LCD_DATA0_PORT     LCD_PORT
  5. #define LCD_DATA1_PORT     LCD_PORT
  6. #define LCD_DATA2_PORT     LCD_PORT
  7. #define LCD_DATA3_PORT     LCD_PORT
  8. #define LCD_DATA0_PIN     3
  9. #define LCD_DATA1_PIN     2
  10. #define LCD_DATA2_PIN     1
  11. #define LCD_DATA3_PIN     0
  12. #define LCD_RS_PORT       LCD_PORT
  13. #define LCD_RS_PIN       6
  14. #define LCD_RW_PORT       LCD_PORT
  15. #define LCD_RW_PIN       5
  16. #define LCD_E_PORT       LCD_PORT
  17. #define LCD_E_PIN       4
  18. #define LCD_LINES       2
  19. #define LCD_DISP_LENGTH1   6
  20.  
  21.  
  22. #include <util/delay.h>
  23. #include "conf/global.h"
  24. #include "lcd.c"
  25.  
  26.  
  27. void ledOn(void);
  28. void ledOff(void);
  29. void ledReverse(void);
  30. void ledRead(void);
  31.  
  32. int main(void){
  33. int i;
  34. char buff[5];
  35.  
  36. lcdInit(LCD_DISP_ON);
  37. lcdPuts("Led test");
  38. ledOn();
  39. _delay_ms(400);
  40.  
  41.  
  42. while(1){
  43. ledReverse();
  44. _delay_us(10);
  45. ledRead();
  46.  
  47. for(i=0; !(PIND & (1 << 6)); i++){
  48. _delay_us(100);
  49. }
  50.  
  51. ledOff();
  52. lcdClr();
  53.  
  54. lcdPuts( itoa(i, buff, 10) );
  55. lcdGotoXY(0, 1);
  56. if(i > 1500){
  57. lcdPuts("dark");
  58. }
  59. else if(i < 150){
  60. lcdPuts("light");
  61. }
  62. else{
  63. lcdPuts("neutral");
  64. }
  65.  
  66. _delay_ms(100);
  67. }
  68.  
  69. return 1;
  70. }
  71.  
  72. void ledOn(void){
  73.   // port
  74.   cbi(PORTD, 5);
  75.   sbi(PORTD, 6);
  76.   // DDR
  77.   sbi(DDRD, 5);
  78.   sbi(DDRD, 6);
  79. }
  80.  
  81. void ledOff(void){
  82.   // port
  83.   cbi(PORTD, 5);
  84.   cbi(PORTD, 6);
  85.   // DDR
  86.   sbi(DDRD, 5);
  87.   sbi(DDRD, 6);
  88. }
  89.  
  90. void ledReverse(void){
  91.   // port
  92.   sbi(PORTD, 5);
  93.   cbi(PORTD, 6);
  94.   // DDR
  95.   sbi(DDRD, 5);
  96.   sbi(DDRD, 6);
  97. }
  98.  
  99. void ledRead(void){
  100.   // port
  101.   sbi(PORTD, 5);
  102.   cbi(PORTD, 6);
  103.   // DDR
  104.   sbi(DDRD, 5);
  105.   cbi(DDRD, 6);
  106. }


> Link naar youtube

[url]http://www.robotroom.com/ReversedLED.html[/url]
[url]http://www.jdm.homepage.dk/solarpic.htm[/url]
[url]http://www.circuitsonline.net/forum/view/31129/1[/url]
Ik ben me hier ook al enige tijd in aan het verdiepen.en heb ook een interessant artikel gevonden over 2-weg communicatie via LED's
je kan dat vinden op www.merl.com en dan zoeken naar TR2003-35
Naam
a-z A-Z 0-9 _

 
E-mail
Wordt niet getoont.
  (niet verplicht)
 
Mail sturen als
(optie)
Smoerijf reageerd
Eender wie reageaard
Nooit
 
Mail sturen
(optie)
Enkel mailen bij eerste reactie
Bij elke reactie mailen
 
Reactie
Laatste wijziging: Wo 1 Oktober 2008, 14:28