MP611

Cдвоенный датчик скорости

Скорость под контролем!

Сдвоенный датчик скорости для Arduino выполнен на основе двух фотоэлектрических щелевых прерывателей, С помощью диска с прорезями, закрепляемого на оси электромотора или колеса, каждый из двух датчиков вырабатывает импульсы, позволяющие определить скорость вращения мотора или колеса. Применяется при конструировании самоходных роботизированных шасси на основе Ардуино, других устройств, где есть необходимость в контроле скорости вращения.

Готовый модуль

Arduino


Вы недавно смотрели

Технические характеристики

Напряжение питания (В)
5
Тип питания
постоянный
Вес
40 г


Особенности

Устройство состоит из двух идентичных щелевых прерывателей, объединенных на одной плате. Это удобно при применении датчика в конструкциях на 2-х и 4-х колесных шасси. В датчике используется триггер Шмитта для получения стабильных выходных импульсов. Дребезг переключения отсутствует.




Наглядно принцип действия датчика можно пояснить следующей картинкой:

Сигнал с фототранзистора поступает на схему подавления возможного дребезга переключения, построенную на триггере Шмитта.

Выходные импульсы могут быть обработаны микроконтроллером, использующим внешние прерывания для подсчета количества импульсов за единицу времени, что позволяет вычислить скорость вращения.

Назначение выводов

VCC: +5В
GND: Общий
OUT1: Выходные импульсы канала 1
OUT2: Выходные импульсы канала 2

 

Пример программы для Ардуино (один канал датчика скорости подсоединен к выводу D2; программа выводит на терминал число положительных фронтов импульсов, поступающих с датчика за 1 сек.):

(Требуется скачать и установить библиотеку TimerOne: ссылка_1 или ссылка_2.)

//*****************************************************************

#include <TimerOne.h>
unsigned int counter=0;
void blink()
{
counter++;
}
void timerIsr()
{
Timer1.detachInterrupt(); //disable the timer1
Serial.print("Count: ");
Serial.print(counter,DEC);
Serial.println("impuls/s");
counter=0;
Timer1.attachInterrupt( timerIsr ); //enable the timer1
}
void setup()
{
Serial.begin(9600);
Timer1.initialize(1000000); // set a timer of length 1sec
attachInterrupt(0, blink, RISING); //INT0
Timer1.attachInterrupt( timerIsr ); // attach the service routine here
}
void loop()
{
; //do nothing



Комментарии

Количество на складе: 3

              
Рейтинг@Mail.ru Яндекс.Метрика