OR-BWSENS — различия между версиями
=DeaD= (обсуждение | вклад) (→Документация) |
=DeaD= (обсуждение | вклад) (→Документация) |
||
(не показано 49 промежуточных версий 3 участников) | |||
Строка 13: | Строка 13: | ||
==Распространенность модуля== | ==Распространенность модуля== | ||
− | * Продано | + | * Продано 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 - Схема модуля]], номинал R3 - 330 Ом, номинал C2 - 0.01 мкФ | + | [[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): | ||
− | |||
− | |||
− | |||
− | + | <source lang="c"> | |
− | + | #include "defines.h" | |
− | + | #include <avr/interrupt.h> | |
− | + | #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): | Код для проверки датчика на 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"> | ||
+ | #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 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 (пока не готова)
Принцип работы датчика:
- Замыкаем на 500мкс (для версии 1 датчика - на 2500мкс) сигнальную линию датчика на питание, разряжая конденсатор;
- Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядит конденсатор;
- Замеряем что на выходе с датчика - 0 или 1.
Контакты:
- Сигнал - первый никак не обозначенный на плате контакт;
- Питание - соответственно + и - обозначенные на плате;
Пример использования для WinAVR
Код для проверки датчика на WinAVR (для контроллера OR-AVR-M32-D, датчик должен быть на линии A0, будет мигать светодиодом на линии C5):
<source lang="c">
- include "defines.h"
- include <avr/interrupt.h>
- 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">
- 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>