OR-BWSENS — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
(Документация)
(Документация)
 
(не показана 51 промежуточная версия 3 участников)
Строка 13: Строка 13:
  
 
==Распространенность модуля==
 
==Распространенность модуля==
* Продано 4 модуля: SkyStorm*2, BERKOF*2
+
* Продано 286 датчиков: SkyStorm*2, BERKOF*2, pashteet*6, galex1981*2, space*4, Dimo3000*2, kropa*4, клиенты_Семёнова_Михаила *8, vladimirkl1 *4, GlassEagle *8, anwi *4, stalker_navy *4, vl.nesterov *8, moravit *4, Dimitri *12, bkzaka *4, girafenok *4, kommail76 *4, delphi_night *4, Антонio *4, клиенты_SkyStorm *44, balu_ol *4, клиенты_Геккона *60, Линуксцентр *4, drcepera *4, УрФУ *40, leshiy33, romanko69 *8, deQUone *4, Duhas *8, Blaze63rus *4, БВЮ *4, victoruni *4
  
 
* Кроме того в использовании 2 модуля: =DeaD=, blindman
 
* Кроме того в использовании 2 модуля: =DeaD=, blindman
  
 
==Документация==
 
==Документация==
[[Media:OR-BWSENS-sch.pdf|OR-BWSENS-sch.pdf - Схема модуля]]
+
[[Media:OR-BWSENS-v2-sch.pdf|OR-BWSENS-sch.pdf - Схема модуля для датчика 2 версии]]
 +
 
 +
[[Media:OR-BWSENS-sch.pdf|OR-BWSENS-sch.pdf - Схема модуля для датчика 1 версии]], номинал R3 - 330 Ом, номинал C2 - 0.01 мкФ
  
 
[[Media:OR-BWSENS-UG.pdf|OR-BWSENS — Инструкция по эксплуатации.pdf]] (пока не готова)
 
[[Media:OR-BWSENS-UG.pdf|OR-BWSENS — Инструкция по эксплуатации.pdf]] (пока не готова)
  
 +
Принцип работы датчика:
 +
# Замыкаем на 500мкс (для версии 1 датчика - на 2500мкс) сигнальную линию датчика на питание, разряжая конденсатор;
 +
# Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядит конденсатор;
 +
# Замеряем что на выходе с датчика - 0 или 1.
 +
 +
Контакты:
 +
* Сигнал - первый никак не обозначенный на плате контакт;
 +
* Питание - соответственно + и - обозначенные на плате;
 +
 +
===Пример использования для WinAVR===
 
Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодом на линии C5):
 
Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодом на линии C5):
#include "defines.h"
 
#include <avr/interrupt.h>
 
#include <util/delay.h>
 
 
   
 
   
int main(void)
+
<source lang="c">
{
+
#include "defines.h"
  DDRC=0x20;
+
#include <avr/interrupt.h>
  while(1==1){
+
#include <util/delay.h>
    DDRA=0xFF;
+
 
    PORTA=0xFF;
+
int main(void)
    _delay_us(2500);
+
{
    DDRA=0x00;
+
  DDRC=0x20;
    PORTA=0x00;
+
  while(1==1){
    _delay_us(2500);
+
    DDRA=0xFF;
    int x=PINA;
+
  PORTA=0xFF;
    if(x & 0x01 == 0x01){
+
  _delay_us(500); //2500 for OR-BWSENS-v1
      PORTC=0x20;
+
  DDRA=0x00;
    }else{
+
  PORTA=0x00;
      PORTC=0x00;
+
  _delay_us(500); //2500 for OR-BWSENS-v1
    };
+
  int x=PINA;
    _delay_us(1000);
+
  if(x & 0x01 == 0x01){
 +
      PORTC=0x20;
 +
  }else{
 +
      PORTC=0x00;
 
   };
 
   };
}
+
  _delay_us(1000);
 +
  };
 +
}
 +
</source>
  
 +
===Пример использования для BASCOM AVR===
 
Код для проверки датчика на BASCOM AVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодами на линиях C5 и B3):
 
Код для проверки датчика на BASCOM AVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодами на линиях C5 и B3):
$regfile = "m32def.dat"
+
 
$crystal = 7372800
+
<source lang="vb">
 +
$regfile = "m32def.dat"
 +
$crystal = 7372800
 +
 
 +
Config Portc = Output
 +
Config Portb = Output
 +
 
 +
Dim A As Byte
 +
 
 +
A = 1
 +
 
 +
While A > 0
 +
  Config Porta = Output
 +
  Set Porta.0
 +
  Waitms 3
 +
  Config Porta = Input
 +
  Reset Porta.0
 +
  Waitms 3
 +
  If Pina.0 = 1 Then
 +
      Set Portc.5
 +
      Set Portb.3
 +
  Else
 +
      Reset Portc.5
 +
      Reset Portb.3
 +
  End If
 +
 
 +
Wend
 +
 
 +
End
 +
</source>
 +
 
 +
===Пример использования для Arduino===
 +
 
 +
Исходное сообщение на форуме с примером подключения: http://roboforum.ru/viewtopic.php?p=143693#p143693
 +
 
 +
Программный код для подключения:
 +
 
 +
<source lang="c">
 +
#include <PololuQTRSensors.h>
 
   
 
   
Config Portc = Output
+
// создаем объект, датчик подключен на pin 10
Config Portb = Output
+
PololuQTRSensorsRC qtr((unsigned char[]) {10}, 1);
+
 
  Dim A As Byte
+
void setup()  
+
{  
A = 1
+
  // калибровка датчика
   
+
  for (int i = 0; i < 250; i++)
While A > 0
+
  {
    Config Porta = Output
+
     qtr.calibrate();
    Set Porta.0
+
     delay(20);
    Waitms 3
+
  }
     Config Porta = Input
+
 
    Reset Porta.0
+
  Serial.begin(9600);
     Waitms 3
+
}
    If Pina.0 = 1 Then
+
 
      Set Portc.5
+
unsigned int vals[1];
      Set Portb.3
 
    Else
 
      Reset Portc.5
 
      Reset Portb.3
 
    End If
 
 
Wend
 
 
End
 
  
Контакты:
+
void loop()
* Сигнал - первый никак не обозначенный на плате контакт;
+
{
* Питание - соответственно + и - обозначенные на плате;
+
  qtr.read(vals);
 +
  Serial.println(vals[0]);
 +
}
 +
</source>
  
 
==Форум поддержки==
 
==Форум поддержки==
 
[[http://www.roboforum.ru/viewtopic.php?f=69&t=5878 http://www.roboforum.ru/viewtopic.php?f=69&t=5878]]
 
[[http://www.roboforum.ru/viewtopic.php?f=69&t=5878 http://www.roboforum.ru/viewtopic.php?f=69&t=5878]]

Текущая версия на 16:47, 25 сентября 2012


Датчик цвета поверхности OR-BWSENS (черное/белое)

Краткие характеристики

Внешний вид модуля.

Габариты модуля: 10 х 15 х 4 мм (длина*ширина — по печатной плате)

Вес: не более 3г

Распространенность модуля

  • Продано 286 датчиков: SkyStorm*2, BERKOF*2, pashteet*6, galex1981*2, space*4, Dimo3000*2, kropa*4, клиенты_Семёнова_Михаила *8, vladimirkl1 *4, GlassEagle *8, anwi *4, stalker_navy *4, vl.nesterov *8, moravit *4, Dimitri *12, bkzaka *4, girafenok *4, kommail76 *4, delphi_night *4, Антонio *4, клиенты_SkyStorm *44, balu_ol *4, клиенты_Геккона *60, Линуксцентр *4, drcepera *4, УрФУ *40, leshiy33, romanko69 *8, deQUone *4, Duhas *8, Blaze63rus *4, БВЮ *4, victoruni *4
  • Кроме того в использовании 2 модуля: =DeaD=, blindman

Документация

OR-BWSENS-sch.pdf - Схема модуля для датчика 2 версии

OR-BWSENS-sch.pdf - Схема модуля для датчика 1 версии, номинал R3 - 330 Ом, номинал C2 - 0.01 мкФ

OR-BWSENS — Инструкция по эксплуатации.pdf (пока не готова)

Принцип работы датчика:

  1. Замыкаем на 500мкс (для версии 1 датчика - на 2500мкс) сигнальную линию датчика на питание, разряжая конденсатор;
  2. Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядит конденсатор;
  3. Замеряем что на выходе с датчика - 0 или 1.

Контакты:

  • Сигнал - первый никак не обозначенный на плате контакт;
  • Питание - соответственно + и - обозначенные на плате;

Пример использования для WinAVR

Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодом на линии C5):

<source lang="c">

  1. include "defines.h"
  2. include <avr/interrupt.h>
  3. include <util/delay.h>

int main(void) {

 DDRC=0x20;
 while(1==1){
   DDRA=0xFF;
  PORTA=0xFF;
  _delay_us(500); //2500 for OR-BWSENS-v1
  DDRA=0x00;
  PORTA=0x00;
  _delay_us(500); //2500 for OR-BWSENS-v1
  int x=PINA;
  if(x & 0x01 == 0x01){
     PORTC=0x20;
  }else{
     PORTC=0x00;
  };
  _delay_us(1000);
 };

} </source>

Пример использования для BASCOM AVR

Код для проверки датчика на BASCOM AVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодами на линиях C5 и B3):

<source lang="vb"> $regfile = "m32def.dat" $crystal = 7372800

Config Portc = Output Config Portb = Output

Dim A As Byte

A = 1

While A > 0

  Config Porta = Output
  Set Porta.0
  Waitms 3
  Config Porta = Input
  Reset Porta.0
  Waitms 3
  If Pina.0 = 1 Then
     Set Portc.5
     Set Portb.3
  Else
     Reset Portc.5
     Reset Portb.3
  End If

Wend

End </source>

Пример использования для Arduino

Исходное сообщение на форуме с примером подключения: http://roboforum.ru/viewtopic.php?p=143693#p143693

Программный код для подключения:

<source lang="c">

  1. include <PololuQTRSensors.h>

// создаем объект, датчик подключен на pin 10 PololuQTRSensorsRC qtr((unsigned char[]) {10}, 1);

void setup() {

 // калибровка датчика
 for (int i = 0; i < 250; i++)
 {
   qtr.calibrate();
   delay(20);
 }
 Serial.begin(9600);

}

unsigned int vals[1];

void loop() {

 qtr.read(vals);
 Serial.println(vals[0]);

} </source>

Форум поддержки

[http://www.roboforum.ru/viewtopic.php?f=69&t=5878]