Здравствуйте!
Возникла необходимость подключить к Ардуино несколько термопар с АЦП МАХ6675 и прередавать результаты измерений по UART.
Понятно, что выводы SCK и SO для всех АЦП параллелятся, а CS используются для выбора чипа. Но как этот выбор осуществить практически, разобраться не смог. "Перекопал" кучу ресурсов в НЭТе - везде только описание интерфейса и общие рассуждения. Практические примеры - только для одного устройства. Пытался "выудить" подсказку из библиотек SPI и MAX, но моих знаний для этого оказалось мало.
Вторая проблема - не разобрался в том, как задаются адреса результатов измерений в буфере обмена (урок 48) для передачи по UART.
Прошу, если можно, показать пример скетча для 2-3 АЦП (в моём устройстве их будет гораздо больше) и "разжевать" подробно, как задавать адреса данных.
Использование SPI
Re: Использование SPI
Здравствуйте!
Сигналом CS выбираете микросхему, с которой сейчас работает ведущее устройство. Выбираете первый АЦП и считываете с него данные, потом второй и т.д. Представьте, что АЦП, у которого сигнал CS в неактивном состоянии оторван от интерфейса.
Что касается передачи данных. Я вам советую использовать протокол ModBus. Он описан в последующих уроках и есть библиотеки для работы с ним. Вы заводите на ведомом устройстве массив, подключаете библиотеку и ведущее устройство имеет доступ к этому массиву.
Сигналом CS выбираете микросхему, с которой сейчас работает ведущее устройство. Выбираете первый АЦП и считываете с него данные, потом второй и т.д. Представьте, что АЦП, у которого сигнал CS в неактивном состоянии оторван от интерфейса.
Что касается передачи данных. Я вам советую использовать протокол ModBus. Он описан в последующих уроках и есть библиотеки для работы с ним. Вы заводите на ведомом устройстве массив, подключаете библиотеку и ведущее устройство имеет доступ к этому массиву.
Re: Использование SPI
Здравствуйте, Эдуард!
То, что Вы рассказали - понятно, я сразу об этом сказал. Но вот каким именно образом это осуществить? Была мысль насчёт цикла "for", но как привязать переменную к конкретному чипу? и как определить и задать время считывания? Вероятно, нужен другой метод. Хотелось бы услышать совет именно об этом.
Другой вариант - последовательно прописывать, что на CS такой-то подаём низкий уровень и т.д.. Но, во-первых - та же проблема со временем, а во-вторых - в данном случае количество АЦП составляет 40 - 50 шт. (МЕГА 2560),- и геморройно, и не факт, что хватит памяти для размещения скетча.
Не могли бы Вы набросать для понимания принципа примерный скетч на 2 - 3 чипа?
То, что Вы рассказали - понятно, я сразу об этом сказал. Но вот каким именно образом это осуществить? Была мысль насчёт цикла "for", но как привязать переменную к конкретному чипу? и как определить и задать время считывания? Вероятно, нужен другой метод. Хотелось бы услышать совет именно об этом.
Другой вариант - последовательно прописывать, что на CS такой-то подаём низкий уровень и т.д.. Но, во-первых - та же проблема со временем, а во-вторых - в данном случае количество АЦП составляет 40 - 50 шт. (МЕГА 2560),- и геморройно, и не факт, что хватит памяти для размещения скетча.
Не могли бы Вы набросать для понимания принципа примерный скетч на 2 - 3 чипа?
Re: Использование SPI
Здравствуйте!
У вас такое количество АЦП!
Не лучше использовать один АЦП с аналоговым коммутатором на входе. У меня была такая разработка для термопар. Я выкладывал схему на форуме.
У вас такое количество АЦП!
Не лучше использовать один АЦП с аналоговым коммутатором на входе. У меня была такая разработка для термопар. Я выкладывал схему на форуме.
Re: Использование SPI
Здравствуйте!
К сожалению, в данном случае такой вариант не подходит. Требуется максимально возможная точность измерений, а я сильно не уверен в том, что коммутация милливольтовых сигналов не внесёт дополнительных погрешностей.
К тому же добавление в схему коммутатора - это лишнее, на мой взгляд, усложнение. Тем более, что
в данном случае финансовый аспект не сильно важен (комплектацию закупает предприятие), а вот надёжность - важна. Если выйдет из строя один АЦП, то будут потеряны результаты одного измерения, а если коммутатор - то потеряется всё.
И есть ещё одно соображение - вряд ли это последний проект, в котором может потребоваться SPI. Поэтому я очень прошу - если Вы имеете опыт использования SPI с несколькими датчиками, то объясните, пожалуйста, как это реализуется.
К сожалению, в данном случае такой вариант не подходит. Требуется максимально возможная точность измерений, а я сильно не уверен в том, что коммутация милливольтовых сигналов не внесёт дополнительных погрешностей.
К тому же добавление в схему коммутатора - это лишнее, на мой взгляд, усложнение. Тем более, что
в данном случае финансовый аспект не сильно важен (комплектацию закупает предприятие), а вот надёжность - важна. Если выйдет из строя один АЦП, то будут потеряны результаты одного измерения, а если коммутатор - то потеряется всё.
И есть ещё одно соображение - вряд ли это последний проект, в котором может потребоваться SPI. Поэтому я очень прошу - если Вы имеете опыт использования SPI с несколькими датчиками, то объясните, пожалуйста, как это реализуется.
Вернуться в «Программирование Ардуино»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей