Датчик шума вместе с сервоприводом

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
inokris
Сообщения: 6
Зарегистрирован: 17 мар 2015, 12:35

Датчик шума вместе с сервоприводом

Сообщение inokris »

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

Код: Выделить всё

#include <Servo.h>
Servo servo;
int threshold = 600;
int volume;

void setup() 
{ 
Serial.begin(9600); // For debugging
pinMode(A0, INPUT); // вход
pinMode(10, OUTPUT);// выход
servo.attach (10); // моторчик из порта 10

}

void loop() 
{
volume = analogRead(A0);
Serial.println(volume);
delay(45);

if(volume>=threshold){
servo.write (90); // если звук громкий то поворот на 90 градусов
delay ( 1000); 
} 
else{
servo.write (0) ; // если нет звука то находится в нуле
}
}
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Датчик шума вместе с сервоприводом

Сообщение Mr.Kubikus »

Привет!

Скажите, пожалуйста, что за устройство подключено у вас к входу A0? И еще - как организовано питание платы?
С уважением, Григорий
GitHub FB ВК
inokris
Сообщения: 6
Зарегистрирован: 17 мар 2015, 12:35

Re: Датчик шума вместе с сервоприводом

Сообщение inokris »

Mr.Kubikus писал(а):Привет!

Скажите, пожалуйста, что за устройство подключено у вас к входу A0? И еще - как организовано питание платы?



К А0 подключен микрофон. Питание идет от компьютера, подключали к батарейке- реакция такая же. Вот схемку быстро начертила ( сорри что так криво под рукой линейки нет).
Вложения
Снимок экрана 2015-03-17 в 14.27.40.png
Снимок экрана 2015-03-17 в 14.20.07.png
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Датчик шума вместе с сервоприводом

Сообщение Mr.Kubikus »

Проводочки к плате с микрофоном хорошо припаяны?
С уважением, Григорий
GitHub FB ВК
inokris
Сообщения: 6
Зарегистрирован: 17 мар 2015, 12:35

Re: Датчик шума вместе с сервоприводом

Сообщение inokris »

Mr.Kubikus писал(а):Проводочки к плате с микрофоном хорошо припаяны?
Да, я тоже думала об этом. Однако, с пьезопищалкой все работает. Не думаю что проблема может быть в этом.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Датчик шума вместе с сервоприводом

Сообщение Mr.Kubikus »

А что показывает отладочный вывод в терминале во время работы?

Кстати, строка "pinMode(A0, INPUT);" лишняя.
С уважением, Григорий
GitHub FB ВК
inokris
Сообщения: 6
Зарегистрирован: 17 мар 2015, 12:35

Re: Датчик шума вместе с сервоприводом

Сообщение inokris »

Mr.Kubikus писал(а):А что показывает отладочный вывод в терминале во время работы?

Кстати, строка "pinMode(A0, INPUT);" лишняя.
Он вообще не реагирует на динамик, а лишь выдают цикличные значения во время работы сервопривода.
Вложения
Снимок экрана 2015-03-17 в 16.06.05.png
Снимок экрана 2015-03-17 в 16.06.05.png (297.03 КБ) 30882 просмотра
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Датчик шума вместе с сервоприводом

Сообщение Mr.Kubikus »

Ну вот, в отладочном выводе все видно.

Смотрите - порог срабатывания threshold у вас установлен 600. Когда контроллер считывает из АЦП значение больше 600, то сервомашинка поворачивается на 90 градусов и затем процессор "застревает" на вызове delay(1000) на 1 с. После этого цикл повторяется. Если АЦП в следующий раз вернет значение меньше или равно 600, то сервомашинка вернется в исходное положение. И так повторяется каждый раз.

Кстати, какие значения переменной volume соответствуют "шуму", а какие "тишине"? Вы проводили эксперимент?
С уважением, Григорий
GitHub FB ВК
inokris
Сообщения: 6
Зарегистрирован: 17 мар 2015, 12:35

Re: Датчик шума вместе с сервоприводом

Сообщение inokris »

Mr.Kubikus писал(а):Ну вот, в отладочном выводе все видно.

Смотрите - порог срабатывания threshold у вас установлен 600. Когда контроллер считывает из АЦП значение больше 600, то сервомашинка поворачивается на 90 градусов и затем процессор "застревает" на вызове delay(1000) на 1 с. После этого цикл повторяется. Если АЦП в следующий раз вернет значение меньше или равно 600, то сервомашинка вернется в исходное положение. И так повторяется каждый раз.

Кстати, какие значения переменной volume соответствуют "шуму", а какие "тишине"? Вы проводили эксперимент?

Да, так и должно быть. Однако, сервомашинка проворачивается даже в абсолютной тишине. И вообще периодически живет своей жизнью, например меняет угол. То есть весь этот цикл происходит без участия микрофона, как подключаешь питание так и сервомашинка вертится туда обратно без перерыва. В этом и заключается проблема.
Да, что то вроде эксперимента. Когда все прекрасно работало с пьезопищалкой идеальными значениями threshold были 600-750. При значениях около 200 пищалка издавала звук не переставая, а при значениях свыше 1000 была очень низка чувствительность.

P.S.
Огромное спасибо, что оказываете такое внимание!
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Датчик шума вместе с сервоприводом

Сообщение Mr.Kubikus »

Хорошо. Тогда посмотрите, что показывает отладочный вывод в абсолютной тишине. По идее на экране должны быть значения близкие к нулю.
С уважением, Григорий
GitHub FB ВК
Ответить