| | Пружинный вибродатчик


Пружинный вибродатчик

,
0 комментариев    29 просмотров    Версия для печати

Когда я перевёл статью о псевдодеревянных светодиодных часах, некоторые читатели подумали: можно ли в них датчик вибрации, необходимый для переключения режимов часов, термометра и гигрометра по кольцу, заменить на самодельный? Конечно, можно, и автор Instructables под ником ArifSae рассказывает, как.

В качестве подвижного элемента датчика мастер использует пружину из обмоточного провода. Помимо медной, можно использовать и стальную пружину, например, от авторучки с кнопкой, но она более жёсткая, что повлияет на параметры датчика.


Поскольку обмоточный провод покрыт лаком, его нужно зачистить. Для этого ArifSae применяет наждачку:



Наматывает зачищенный провод (кстати, взятый из двигателя сломанного компьютерного вентилятора) на гвоздь:



И собирает из пружины и 220-омного резистора на макетной плате типа perfboard такую штуку:



Если пружина медная, располагать такой вибродатчик следует строго вертикально, иначе пружина наклонится и коснётся вывода резистора и при отсутствии вибрации. Со стальной пружиной можно добиться работы датчика в любом положении.


Подавлять дребезг контактов датчика можно как программно, так и аппаратно. Второе позволяет упростить программу, при этом электрическая схема усложняется незначительно. Одна из схем для аппаратного подавления дребезга показана на рисунке:



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


У разработчика вибродатчик подключён к аналоговому входу Arduino, что позволяет считывать его состояние как командой digitalRead, так и командой analogRead. Во втором случае можно отключить конденсатор, тогда аппаратного подавления дребезга не будет, и программа сможет оценивать интенсивность вибрации. Ниже приведены два скетча-примера использования соответствующих команд. Первый:

int sensor = A5; // sensor pin
int led = 13; // default led on arduino

void setup() {

pinMode (sensor, INPUT);

pinMode (led, OUTPUT);

Serial.begin(9600);

}

void loop() {

int voltage = digitalRead(sensor); // read sensor here

Serial.println (voltage); // print voltage to serial monitor on pc

delay (1000);

if (voltage >= 1) { // if spring contacts on shaking

digitalWrite (led, HIGH); // turn on led to show that vibration is sensed

delay (2000);

digitalWrite (led, LOW); // turn off led now

} // end if voltage

} // end loop



И второй:


int sensor = A5;
int led = A0;

void loop() {

int sensorValue = analogRead(sensor);

float voltage = sensorValue * (5.0 / 1023.0);

Serial.println (voltage); delay (200);

if (voltage >= 0.5) { // set sensitivity here, increase voltage 0.5 for less sensitive , decrease for more sensitive

digitalWrite (led, HIGH);

delay (2000);

digitalWrite (led, LOW); }

}


Преимущество вибрационного датчика перед сенсорным состоит в возможности переключать режимы не прикосновением к определённой точке корпуса, а постукиванием по нему в любом месте. При втором способе считывания можно добиться различной реакции в зависимости от интенсивности постукивания. Например, сделать переключение режимов по кольцу реверсивным: при слабом постукивании в одну сторону, при сильном - в другую.

Источник


0 0

Это интересно:




Читайте также:

Бытовая техника и электроника         08 янв 2019, 09:38
Бытовая техника и электроника         07 янв 2019, 12:00

Коментарии:

Вопрос: Сколько будет 5-4?
Я принимаю Пользовательское соглашение и подтверждаю, что согласен с Политикой конфиденциальности данного сайта.



Вверх