Thông báo

Collapse
No announcement yet.

Cần giúp đỡ về cảm biến màu TCS3200

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần giúp đỡ về cảm biến màu TCS3200

    Em đang tìm hiểu về con cảm biến này, trên mạng thì em chỉ thấy có 1 đoạn code mẫu dành cho arduino. Do không học arduino nên em có một số đoạn không rõ lắm. Đọc datasheet của con này lúc đầu thấy cũng khá đơn giản, nhưng đến lúc lập trình cho nó em cảm thấy mông lung vì không biết cần phải bắt đầu từ đâu. Vậy có bác nào rành về cái này và đã dùng con này trên 8051, AVR hoặc ARM thì có thể giúp em được không ạ.
    Đây là vài dòng giới thiệu về em nó:
    Click image for larger version

Name:	tcs3200-colour-sensor-module.jpg
Views:	1
Size:	28.2 KB
ID:	1421749
    Module cảm biến màu TCS3200 là một modulecảm biến phát hiện đầy đủ màu sắc, bao gồm cả cảm biến màu TCS3200 với khả năng nhận biết 3 mầu cơ bản RGB và 4 đèn LED trắng. Các TCS3200 có thể phát hiện và đo lường gần như tất cả màu sắc có thể nhìn thấy. Ứng dụng bao gồm kiểm tra đọc dải, phân loại theo màu sắc, cảm biến ánh sáng xung quanh và hiệu chuẩn, và kết hợp màu sắc, đó chỉ là một vài ứng dụng. TCS3200 có các bộ tách sóng quang, có 2 bộ lọc màu sắc là bộ lọc màu đỏ, xanh, hoặc màu xanh, hoặc không có bộ lọc ( rõ ràng). Các bộ lọc của mỗi màu được phân bố đều khắp các mảng để loại bỏ sai lệch vị trí giữa các điểm màu. Bên trong là một bộ dao động tạo ra đầu ra sóng vuông có tần số là tỷ lệ thuận với cường độ của màu sắc lựa chọn.
    Module cảm biến màu TCS3200
    Thông số kỹ thuật
    Điện áp cung cấp: (2.7V đến 5.5V)
    Chuyển đổi từ cường độ ánh sáng sang tần số với độ phân giải cao
    Có khả năng lập trình để nhận biết đầy đủ các màu sắc
    Điện năng tiêu thụ thấp
    Giao tiếp trực tiếp với vi điều khiển
    S0 ~ S1: Dùng để lựa chọn tỉ lệ tần số đầu ra
    S2 ~ S3: Dùng để lựa chọn kiểu photodiode
    OUT Pin: Đầu ra tần số
    OE Pin: Tần số đầu ra cho phép hoạt động (hoạt động ở mức thấp).
    Hỗ trợ đèn LED bổ sung và kiểm soát ánh sáng
    Kích thước: 28.4x28.4mm
    Nguyên tắc nhận biết màu
    TCS3200 có bộ lọc màu, khi lựa chọn một bộ lọc màu nó sẽ cho phép chỉ nhận biết 1 màu và các màu khác sẽ bị chặn. Ví dụ, khi lựa chọn các bộ lọc màu đỏ, Chỉ có ánh sáng tới màu đỏ có thể được thông qua, màu xanh và màu xanh lá cây sẽ được ngăn chặn. Vì vậy chúng ta có thể nhận được cường độ ánh sáng màu đỏ. Tương tự như vậy, khi lựa chọn các bộ lọc khác mà chúng ta có thể nhận được ánh sáng màu xanh hoặc màu xanh lá cây.
    Cách thiết lập màu sắc cho TCS3200
    Click image for larger version

Name:	TCS3200_color_setting.png
Views:	1
Size:	26.4 KB
ID:	1421748
    Tần số đầu ra của TCS3200 trong khoảng 2HZ~500KHZ. Tần số đầu ra có dạng xung vuông với tần số khác nhau khi mà màu sắc khác nhau và cường độ sáng là khác nhau.
    Chúng ta có thể lựa chọn tỉ lệ giữa cừng độ sáng và màu sắc theo bảng sau:
    Trên module này cũng có chân LED EN đây là chân điều khiển đèn LED để tắt hoặc bật
    Cách thiết lập tần số cho TCS3200
    Click image for larger version

Name:	TCS3200_frequency_setting.png
Views:	1
Size:	18.7 KB
ID:	1421747
    Đây là code mẫu cho arduino

    int s0=3,s1=4,s2=5,s3=6;
    int out=2;
    int flag=0;
    byte counter=0;
    byte countR=0,countG=0,countB=0;
    void setup()
    {
    Serial.begin(115200);
    pinMode(s0,OUTPUT);
    pinMode(s1,OUTPUT);
    pinMode(s2,OUTPUT);
    pinMode(s3,OUTPUT);

    }
    void TCS()
    {
    flag=0;
    digitalWrite(s1,HIGH);
    digitalWrite(s0,HIGH);
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);
    attachInterrupt(0, ISR_INTO, LOW);
    timer0_init();

    }
    void ISR_INTO()
    {
    counter++;
    }
    void timer0_init(void)
    {
    TCCR2A=0x00;
    TCCR2B=0x07; //the clock frequency source 1024 points
    TCNT2= 100; //10 ms overflow again
    TIMSK2 = 0x01; //allow interrupt
    }
    int i=0;
    ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt

    executive function
    {
    TCNT2=100;
    flag++;
    if(flag==1)
    {
    countR=counter;
    Serial.print("red=");
    Serial.println(countR,DEC);
    digitalWrite(s2,HIGH);
    digitalWrite(s3,HIGH);
    }
    else if(flag==2)
    {
    countG=counter;
    Serial.print("green=");
    Serial.println(countG,DEC);
    digitalWrite(s2,LOW);
    digitalWrite(s3,HIGH);
    }
    else if(flag==3)
    {
    countB=counter;
    Serial.print("blue=");
    Serial.println(countB,DEC);
    Serial.println("\n");
    digitalWrite(s2,LOW);
    digitalWrite(s3,LOW);

    }
    else if(flag==4)
    {
    flag=0;
    }
    counter=0;
    }
    void loop()
    {
    TCS();
    while(1);
    }

Về tác giả

Collapse

Dr.Fire Tìm hiểu thêm về Dr.Fire

Bài viết mới nhất

Collapse

Đang tải...
X