GSM шилд, питание... гуляют показания акселерометра

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем helsq, 24 авг 2012.

  1. helsq

    helsq Нуб

    Здравствуйте.
    Поставил перед собой задачу собрать устройство, которое будет сигнализировать о изменении своего положения.
    Подключил акселерометр ADXL335 к ардуино, написал код, который при инициализации устройства считывает начальные значения акселерометра, фильтрует низкую от него и при отклонении текущего значения акселя от начального на определенную величину, зажигает светодиод, все работает как нужно.
    Усложняю схему. Добавляю туда GSM шилд. И тут начинаются свистопляски.
    Допустим, при инициализации, аксель выдает следующие значения: x=366, y=366, z=415.
    Двигаю акселерометр (x=369, y=367, z=415), код высчитывает, что отклонение в текущем значении больше допустимого и дает команду GSM шилду начать звонок на определенный номер. И тут акселерометр зашкаливает в показаниях, x=450, y=450, z=500. И так пока звонок не будет завершен. И если момент звонка я знаю и могу как-то обработать, то GSM шилд живет своей жизнью и время от времени, выполняет какие-то действия, и наводит помехи на акселерометр, заставляя его выдавать не правильные значения, что приводит к ложным срабатываниям.
    Думал, что это наводки от радиосигнала, но ни экранирование, ни удаление датчика от антенны на значительное расстояние нисколько не повлияло на выходные значения.
    Плюс к этому. Хотелось создать устройство с определенной автономностью. Приобрел аккумулятор на 5v и специальный зарядник. Он либо питает плату от источника 5V либо переключается на аккумулятор, если источник отключен. Так вот, если запустить ардуино с источника, а потом переключить на аккум, то акселерометр тоже начинает врать.
    Пришел к выводу, что проблема в опорном напряжении питания для акселерометра. Так вот собственно, что делать?

    1. Как сделать обратную связь по питанию?
    2. Можно ли сделать это программно, узнать например о изменении входного напряжения и скорректировать показания датчика?
    3. Помогут ли два источника питания для датчика и gsm шилда? А как тогда быть с переключением на батарею, входное напряжение-то все равно будет меняться?

    Буду благодарен за любую информацию и помощь.
     
  2. hibiki

    hibiki Гик

    первое, что в голову приходит - измерять напряжение на батарейке АЦПом контроллера и как-то ловить изменения. это к первым двум вопросам. другое дело - скорость реакции системы в таком случае.

    GSM-шилд, как и любой gsm-девайс, штука "шумная" в плане наводок, и собственной жизнью живет всегда, пока питание есть - связь так устроена. а массово применяемые акселерометры реагируют даже на "чих Кощея бессмертного в соседней области" (с)
     
  3. helsq

    helsq Нуб

    Как это можно сделать? У меня была мысль подключить 5V через резистор на аналоговый вход и мерять уровень напряжения, но что-то не знаю как правильно это сделать и есть ли вообще смысл, какой резистор брать?

    Это звучит как приговор(.
     
    Humiboy нравится это.
  4. <Lame>

    <Lame> Гик

    У меня тоже похожее было. Этот акселерометр меняет свои показания при изменении входного напряжения, а от gsm шилда походу идут помехи на ардуиновскую ацп, или же gsm очень много жрет, и дуиновский стабилизатор не справляется со своей обязанностью. Думаю,что надо попробовать вывести gsm shield на длинных проводах, и подключить его вход к VIn, но при условии, что питание будет не больше 5v! Или же просто подключить акселерометр через стабилизатор на 5v
     
    Humiboy нравится это.
  5. hibiki

    hibiki Гик

    вот здесь - делитель напряжения, чтобы получить сигнал меньше 5 вольт - http://wiki.amperka.ru/схемотехника:делитель-напряжения

    вот здесь - работа с аналоговым входом - http://wiki.amperka.ru/сенсоры:аналоговые
    в двух словах - analogRead() вернет значение от 0 до 1023 (0..5 вольт соответственно)

    от просадки питания при подключении GSM-шилда спасет заведомо более мощный источник с хорошей стабилизацией, от наводок - только экранирование и вынос шилда "куда подальше"
     
    Humiboy нравится это.
  6. helsq

    helsq Нуб

    Спасибо все кто ответил.
    Я просто перевел ардуино на 3,3V и все заработало стабильно. Дело в том что питание от usb было 4,6V, от батареи 4,8V, работа GSM-шилда просаживала еще на 0,3V, поэтому акселерометр начинал врать, так же врал когда питание переключалось с usb на батарею. Устройство проработало в тестовом режиме сутки, радионаводок от GSM-шилда не замечено (смонтированы впритык друг к другу).
    Попробую еще по следующему рецепту считать входное напряжение и запустить все от ~5V, ну это так для спортивного интереса.
     
  7. hibiki

    hibiki Гик

    интересно. читайте даташиты, называется :)