Тройка шилд и сенсоры на 3.3V

Тема в разделе "Arduino & Shields", создана пользователем Иван С, 18 июл 2012.

  1. Иван С

    Иван С Гик

    Пока я разбирался с предыдущей проблемой вспомнил о том, что тройка шилд даёт всем сенсорам 5V, а ускоренееметру, который я хочу использовать, нужно 3.3V. Как решить эту проблему?

    P.S. На этом форуме уже есть статья об этом, но я там ни чего не понял)
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    А что у вас за акселерометр? Может его 5 В таки устроит? Если нет, то тройка не поможет никак.
     
  3. Иван С

    Иван С Гик

    Пока что я только планирую комплект: ваши Leonardo и акселерометр плюс пара резисторов.
    То есть я правильно понял что к тройке можно цеплять только пяти вольтовки? С I/O шилдами также?
     
  4. Иван С

    Иван С Гик

    Вообще-то тройку необязательно использовать, проще всё спаять...
     
  5. nailxx

    nailxx Официальный Нерд Администратор

    Дык наш MMA7361 (вернее не наш, а DFRobot) замечательно работает от 5 В. Своими руками пробовал. Не смотрите datasheet в отрыве от платы: на плате сделан обвес, понижающий напряжение.

    Тройка, да, всегда даёт столько напряжения сколько есть на пине, обозначенном как 5V на Arduino Uno. То, есть, да — 5 В. IO Shield от DFRobot так же меньше 5 В вам не выдаст.
     
  6. Иван С

    Иван С Гик

    ОК, с подключением ясно. А как собственно работает акселерометр? Я где-то читал что он по умолчанию выдаёт на каждой оси половину (т.е. 512), а при наличии ускорения и если оно положительное, то увеличивает значение, если же отрицательное, то уменьшает. Т.е. выходит что если плата на входе прочитает значение 513, то это значит что на данной оси ускорение равно 1? Если да, то значит ли это что ускорение равно одному метру на секунду в квадрате или надо каике-то расчёты делать?
     
  7. nailxx

    nailxx Официальный Нерд Администратор

    По способу общения всё так и происходит. По величинам: у акселерометра выбирается чувствительность: либо 1,5 g (9,8×1,5 м/с²) либо 6 g (9,8×6 м/с²) соответствующая полному рабочему диапазону, т.е. 512 градациям.

    То есть ускорение = sensitivity / abs(analogRead(accel) - 512)
     
  8. Иван С

    Иван С Гик

    А что возвращает функция abc()? Как я понял она возвращает модуль числа, но зачем, разве нельзя просто аналогРид - 512 поделить на чувствительность (т.е. на 1,5 либо 6, да?) и получить отрицательное ускорение, что даст нам понять что акселерометр движется по этой оси назад, с модулем известного ускорения?
     
  9. nailxx

    nailxx Официальный Нерд Администратор

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