Massduino md328d и пьезодатчик
- Войдите на сайт для отправки комментариев
Здравствуйте! Меня можно считать новичком. Купил плату massduino md328d, пытаюсь завести на аналоговый вход пьезодатчик через параллельно подключенный резистор на 1 МОм. К сожалению, не выходит. На ней стоит CH340
Пытался подключить, например, по такой схеме: https://cdn.instructables.com/F1C/KMPX/I5UX98B1/F1CKMPXI5UX98B1.LARGE.jpg
При подключении всего этого дела, на аналоговом порту значение читается явно некорректно.
При этом если отключенный пьезодатчик потыкать вольтметром - напряжение генерируется.
Если собрать по схеме, то сколько ни тыкай - показывает ноль.
Вопрос к возсожным обладателям подобной платы: у меня недостаточно прямые руки, или этот контроллер работает с пьезами иначе, чем оригинальная ардуино? Стоит ли идти покупать оригинальную Uno ради эксперимента, или можно завести на этой плате?
Там АЦП до 16 бит, но чтобы задействовать больше 10бит нужно поставить поддержку в IDE.
http://mypractic.ru/urok-54-specifika-programmirovaniya-platy-massduino-...
vladitot, народ писал что на этой плате есть перепутанные пины. Так что стоит попробовать воткнуть в другие входы. А вообще, кто надоумил вас купить это говнище? наверно у тех стоит и спрашивать :) И ещё -схема включения это хорошо, а где остальная инфа? Стоит ли аддон в IDE, какой скетч заливали. Реагирует ли монитор порта просто на подключение +3,3/+5 к аналоговому входу.
Спасибо за ответы!
vladitot, народ писал что на этой плате есть перепутанные пины. Так что стоит попробовать воткнуть в другие входы. А вообще, кто надоумил вас купить это говнище? наверно у тех стоит и спрашивать :) И ещё -схема включения это хорошо, а где остальная инфа? Стоит ли аддон в IDE, какой скетч заливали. Реагирует ли монитор порта просто на подключение +3,3/+5 к аналоговому входу.
Заливал такой и подобный скетч, например, менял адрес порта вместо "0" на "А0", менял чувствительность.
Я завожу это все дело на маке, видимо из-за этого у меня в мониторе порта выводятся кракозябры вместо цифр и букв, но я завел это дело на лампочке.
С точки зрения того, как реагирует плата:
У меня нашелся только переменный резистор на 1 МОм. Если я его выставляю на 1 МОм, то при подключении земля-А0 на резисторе есть напряжение около 4,5 вольт. Я почему то полагаю, что это неправильно. Таким макаром подключенный светодиод у меня в соответствии со скетчем постоянно моргает. Если же я выкручиваю резистор на минимальное сопротивление (ну вроде как), то ток пропадает.. Впрочем, опять таки, не могу не грешить на прямоту рук..
Ну и вопрос в догонку, на этой плате заведется ли без проблем такая схема? http://roboshop.spb.ru/arduino/xDuino-Uno
Я завожу это все дело на маке, видимо из-за этого у меня в мониторе порта выводятся кракозябры вместо цифр и букв, но я завел это дело на лампочке.
Вы бросили одну проблему что б разобраться с другой, в итоге не разобрались ни с одной ни с другой. Это не професиональный подход. Сначала сделайте вывод в монитор порта, без него вообще дальше мигания светодиодом не продвинитесь.
У меня нашелся только переменный резистор на 1 МОм. Если я его выставляю на 1 МОм, то при подключении земля-А0 на резисторе есть напряжение около 4,5 вольт. Я почему то полагаю, что это неправильно.
Когда заработает вывод через сериал подключите свой переменник к минусу и плюсу 5в, средний вывод на аналоговый вход. Вращением ручки убедитесь что показания плавно возрастают и уменьшаются. Только после этого можно пробовать подключить пьезик.
Я завожу это все дело на маке, видимо из-за этого у меня в мониторе порта выводятся кракозябры вместо цифр и букв, но я завел это дело на лампочке.
Вы бросили одну проблему что б разобраться с другой, в итоге не разобрались ни с одной ни с другой. Это не професиональный подход. Сначала сделайте вывод в монитор порта, без него вообще дальше мигания светодиодом не продвинитесь.
У меня нашелся только переменный резистор на 1 МОм. Если я его выставляю на 1 МОм, то при подключении земля-А0 на резисторе есть напряжение около 4,5 вольт. Я почему то полагаю, что это неправильно.
Когда заработает вывод через сериал подключите свой переменник к минусу и плюсу 5в, средний вывод на аналоговый вход. Вращением ручки убедитесь что показания плавно возрастают и уменьшаются. Только после этого можно пробовать подключить пьезик.
Понял, займусь вопросом и отпишусь.
Спасибо участникам за ценные наводки!
Мне в конечном итоге удалось все подключить. Проблема действительно есть в этой самой массдуине. Заключается прежде всего в том, что скорость работы последовательного порта не соответствует реальности, а именно: если выставить 9600 в прошивке, то в компьютере на port-listener нужно выставить скорость в 4 раза меньшую. Ох уж эти китайцы. Ставим 2400 - и вуаля, можем принимать данные с платы. Вдруг кому пригодится.
Пьезу удалось подключить через мегаомный резистор, все ок. Буду продолжать исследования сего дела =)
Проблема действительно есть в этой самой массдуине. Заключается прежде всего в том, что скорость работы последовательного порта не соответствует реальности, а именно: если выставить 9600 в прошивке, то в компьютере на port-listener нужно выставить скорость в 4 раза меньшую. Ох уж эти китайцы. Ставим 2400 - и вуаля, можем принимать данные с платы. Вдруг кому пригодится.
А сколько millis() за секунду она отщелкивает?
Я в теме разработки ПО под микроконтроллеры пока что новый человек, поэтому буду рад, если предложите скетч. Тогда смогу дать ответ.
Чисто программного решения этой задачи не существует. Должен быть какой-то источник временных интервавлов снаружи. Это либо RTC, либо просто выдавать, скажем в порт (или мигать светодиодом) раз в секунду и по секундомеру замерить количество импульсов.
В общем - это все для того, чтобы понять, проблема только с портом, либо у МК вообще сдвинута вся шкала времени.
Свежие дрожжи подъехали! Я тут порылся по интернетам и нашел на сайте производителя так называемый support package.
Установил (на мак) не без маленького геморроя с путями к файлам. Но теперь у меня в списке плат появилась сама massduino md328d. Выровнялась скорость последовательного порта(теперь не надо делить на 4), а также явно стабилизировались показания, приходящие на аналоговый порт.
Остался единственный вопрос, почему соединенные накоротко gnd + a0 дают сигнал равный "0", а полное отсутствие соединения дает 1023?
Это на всех платах так? Или только мне так повезло с подобной "инверсией"?
Ссылку на материалы по плате прилагаю(вкладка "download" под картинкой устройства). http://www.inhaos.com/product_info.php?products_id=156
P.S. до этого плату прошивал как Arduino/Genuino Uno
Остался единственный вопрос, почему соединенные накоротко gnd + a0 дают сигнал равный "0", а полное отсутствие соединения дает 1023?
Это на всех платах так? Или только мне так повезло с подобной "инверсией"?
А какое поведение Вы сочли бы нормальным, и что именно называете "инверсией"?
Свежие дрожжи подъехали! Я тут порылся по интернетам и нашел на сайте производителя так называемый support package.
Я у вас ещё в #2, стоит ли addon в IDE. Этот МК левой конторы вообще без даташитов и каких-либо вразумительных описаний внутренней структуры, и до какой стеени он совместим с мегой328 -известно только его производителям. Без аддона вообще ничего не обязано было работать.
Остался единственный вопрос, почему соединенные накоротко gnd + a0 дают сигнал равный "0", а полное отсутствие соединения дает 1023?
Это на всех платах так? Или только мне так повезло с подобной "инверсией"?
А какое поведение Вы сочли бы нормальным, и что именно называете "инверсией"?
да, я отвечу, какое бы я счёл нормальным поведение. Если коннекта нет - то ничего нет. 0.
если коннект есть, то цифра тем выше, чем выше уровень сигнала. На коротком замыкании должно быть 1023.
если конечно ацп измеряет вольтаж. Наверное мне стоит уточнить, измеряется вольтаж ли?
да, я отвечу, какое бы я счёл нормальным поведение. Если коннекта нет - то ничего нет. 0.
если коннект есть, то цифра тем выше, чем выше уровень сигнала. На коротком замыкании должно быть 1023.
если конечно ацп измеряет вольтаж. Наверное мне стоит уточнить, измеряется вольтаж ли?
У Вас неверное представление о том, что должно быть.
При коротком замыкании на землю должен быть 0.
А вот при разорванном контакте может быть все, что угодно.
Проведите такой эксперимент:
- возьмите две батарейки, скажем, Кроны,
- батарейки между собой не соединяйте,
- подключите щуп вольтметра к "-" первой батарейки, другой - к "+": вольтметр покажет 9В,
- повторите со второй батарейкой,
- теперь один щуп подключите к "-" одной батарейки, а другой - к "-" другой. Что показывает вольтметр? 0В.
- переключите второй щуп на "+" второй батарейки, что теперь? Опять 0В.
А теперь объясните, как 0В - 0В = 9В?
Такое может быть?
Нет, такого быть не может.
Так в чем же подвох?
А подвох в том, что используемый Вами вольтметр не способен различить между содой два принципиально разные состояния:
1. На вход подан 0 вольт,
2. На входе обрыв.
ПОчему так, я сейчас объяснять не буду, но факт в том, что "неизвестно" - "неизвестно" вполне может равняться ( Аольтам, а вот 0 - 0 не может. Т.е. проблема "0-0=9" - это проблема индикации вольтметра, которая к напряжению как таковому не имеет отношения.
Но не любой вольтметр при обрыве показывает 0В. Собственно, 0В при обрыве он показывает потому, что именно так сконструирован. А вот в Ардуино это не так. Там нет принудительного притягивания входа к 0 Вольт, поэтому при обрыве он может давать любые показания, и это является правильным.
Еще раз (повторение - мать учения): 0 Вольт - это конкретное значение напряжения, а обрыв - это отсутствия напряжения. Отсутствие и 0 - это совершенно различные вещи.