roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 06:48

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Настольный ведроид
СообщениеДобавлено: 12 фев 2013, 20:56 
Не в сети

Зарегистрирован: 30 сен 2011, 01:18
Сообщения: 36
Откуда: Рига
прог. языки: Java, C++, Processing
Всем привет!
Давно читаю этот форум, пишу впервые.
Разрешите похвастаться своей первой поделкой на МК:

Изображение

Видео девайса в действии:
http://www.facebook.com/photo.php?v=153183284836831

Корпус - купленная на e-bay фигурка Андроида (пустая), а электронную начинку делал уже я.
Внутри девайса микрофон с самопальным операционным усилителем, attiny85 с кое-какой обвязкой, пьезопищалка, светодиод и серва. Когда девайс слышит громкий звук, он вертит головой и пищит морзянкой "Android rocks". Питается всё это безобразие от USB - девайс стоит на работе рядом с компом, и веселит народ реакцией на чих и матюки :D

Софт писал в Arduino IDE, получилось очень просто и прозрачно (дико удивился, что она умеет компилить под разные AVR-ки). Прошивал тоже Ардуиной.

Идея, если честно, не моя - в качестве основы я скопип*здил этот проект: http://www.instructables.com/id/Mechani ... id-Figure/
В отличие от прототипа, в моём ведроиде используется attiny85, 1 светодиод вместо 5, и платки не макетные, а травленые (ЛУТ пока не удается, маркером рисовал). В целом, мой получился не таким навороченным, зато гораздо более простым в изготовлении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 12 фев 2013, 21:37 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Отличный проект! :good:
Мне понравился.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 12 фев 2013, 22:55 
Не в сети
Аватара пользователя

Зарегистрирован: 14 ноя 2012, 21:30
Сообщения: 170
Откуда: Моск. обл.
Прикольно! :good:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 13 фев 2013, 01:03 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2007, 00:34
Сообщения: 6285
Откуда: Масква
Приккольная штучкадрючка! :)
типа такой "...хто сдесь!?!?!"

_________________
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 14 фев 2013, 12:53 
Не в сети

Зарегистрирован: 30 сен 2011, 01:18
Сообщения: 36
Откуда: Рига
прог. языки: Java, C++, Processing
Спасибо за положительные отзывы :good:
Кстати, такой вопрос знатокам:
Существует ли в природе звуковое реле более простой конструкции, чем то, которое я наколхозил для этого дроида?
Схема:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 14 фев 2013, 15:54 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Микрофон можно завести на АЦП и обрабатывать все программно в МК. Бывают МК со встроенными ОУ, там вообще не проблема.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 14 фев 2013, 16:43 
Не в сети

Зарегистрирован: 30 сен 2011, 01:18
Сообщения: 36
Откуда: Рига
прог. языки: Java, C++, Processing
Позвольте тупой вопрос:

AnalogRead() возвращает значения от 0 до 1023 (это, насколько я понял, из-за 10-битной разрядности АЦП), и эти значения соответственно связаны с интервалом 0-5 вольт на пине, с которого мы читаем, так?

Но ведь электретный микрофон без усилителя просто не будет создавать напруги, которую можно было бы обработать программно... Когда я пробовал тупо воткнуть микрофон в макетку, AnalogRead возвращала значения в ~30-40 единиц при полной тишине, 35-45, если в микрофон говорить с небольшого расстояния, и порядка 100, если в него резко подуть. На источники звука, находящиеся на расстоянии более 30 см, реакции не было вообще.

А вот про МК со встроенными ОУ, если можно, поподробнее. AVR-ки такие бывают?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 14 фев 2013, 16:50 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
AVR - не знаю. видел в доке на stm32f3


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 15 фев 2013, 05:46 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
stigmaster писал(а):
Позвольте тупой вопрос:

AnalogRead() возвращает значения от 0 до 1023 (это, насколько я понял, из-за 10-битной разрядности АЦП), и эти значения соответственно связаны с интервалом 0-5 вольт на пине, с которого мы читаем, так?... AVR-ки такие бывают?


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

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 15 фев 2013, 12:52 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
Почитайте датащит к тиньке85: "2 Differential ADC Channel Pairs with Programmable Gain (1x, 20x)" + как сказали ранее, можно менять опорное напряжение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 15 фев 2013, 12:58 
Не в сети

Зарегистрирован: 30 сен 2011, 01:18
Сообщения: 36
Откуда: Рига
прог. языки: Java, C++, Processing
Спасибо, попробую на досуге :)
Если по дефолту там х1, то двадцатикратного усиления, по идее, должно хватить с головой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 15 фев 2013, 15:45 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
stigmaster писал(а):
AnalogRead возвращала значения в ~30-40 единиц при полной тишине,

Возможно надо поставить RC фильтр, чтобы изъять постоянную составляющую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 27 фев 2013, 06:17 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
точнее просто разделительный конденсатор...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 27 фев 2013, 09:55 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
ну типа того


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Настольный ведроид
СообщениеДобавлено: 07 июн 2013, 11:19 
Не в сети

Зарегистрирован: 30 сен 2011, 01:18
Сообщения: 36
Откуда: Рига
прог. языки: Java, C++, Processing
Наконец-то сподобился опробовать полученные тут советы касательно АЦП.
Пока что попробовал сделать следующее:

Сначала, не мудрствуя лукаво, подцепил микрофон прям на аналоговый вход Дуни. Вход притянул к земле. Результат УГ - в полной тишине serial monitor показывает значения в районе 600, на звуки не реагирует, на постукивание по микрофону реагирует еле-еле (в пределах 10 единиц).
Если я правильно понял, для начала нужно было попробовать аппаратно изъять эти 2 с фигом вольта (600 единиц на АЦП) перед тем, как заводить микрофон на вход.
Подключил микрофон, как показано на этой схеме (только C1 поставил керамический): Изображение
ОК, стал получать на мониторе значения в интервале примерно [0-10].
Нагуглил, что Ардуина позволяет менять опорное напряжение АЦП. Программно доступны 1.1 в, 2.5 в, и 5 в, так что установил 1.1 в.
Код анализа громкости:
Код:
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;

void setup()
{
   Serial.begin(9600);
}


void loop()
{
   unsigned long startMillis= millis();  // Start of sample window
   unsigned int peakToPeak = 0;   // peak-to-peak level

   unsigned int signalMax = 0;
   unsigned int signalMin = 1024;

   // collect data for 50 mS
   while (millis() - startMillis < sampleWindow)
   {
      sample = analogRead(0);
      if (sample < 1024)  // toss out spurious readings
      {
         if (sample > signalMax)
         {
            signalMax = sample;  // save just the max levels
         }
         else if (sample < signalMin)
         {
            signalMin = sample;  // save just the min levels
         }
      }
   }
   peakToPeak = signalMax - signalMin;  // max - min = peak-peak amplitude
   double volts = (peakToPeak * 1.1) / 1024;  // convert to volts

   Serial.println(volts);
}


В итоге, при громких хлопках стал получать значения от 0 до 0.03 вольт (~0-30 единиц из 1024 на serial monitor, если не конвертить в вольты).
Проблема в том, что система вообще не реагирует на источники звука, находящиеся более чем в 2 метрах от неё, а на более близком растоянии реагирует только на очень громкие звуки. Короче, всё-таки, сигнал ещё слишком слаб, чтобы можно было говорить о нормальной программной обработке. Мне почему-то кажется, что и 20-кратное усиление АЦП, упомянутое выше, тут не поможет - усиливать надо раз эдак в 100.

Возможно,я где-то фундаментально накосячил - буду признателен, если ткнёте носом :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO