Страница 1 из 4

Датчик уровня на MCP23017

Добавлено: 29 май 2018, 17:59
poavel72
Здравствуйте. Возникла необходимость сделать начинку для датчика уровня на 48 значений с выводом их на модбас. Для этого использовал три микросхемы МСР23017, ардуино нано и китайский преобразователь RS-485. Развел плату, сделал подтяжку резисторами 10к к "0" входов МСР23017, спаял, прошил- и все как обычно, не работает. За основу взял блок из Flprog c МСР23017. Адреса микросхем разделил. Да и еще, пробовал делать сканирование I2C, заливал скетч из инструкции- в мониторе Com порта- тоже ничего. Порядок входов на микросхемы расширения непоследовательный из-за особенностей разводки платы. Подскажите, работоспособен ли мой скетч, или я там ошибок налепил? Спасибо.

Датчик уровня

Добавлено: 29 май 2018, 19:26
KSP
А как проверяли работоспособность QModbus или по другому?
И еще на самих микросхемах адреса задали?

Датчик уровня

Добавлено: 29 май 2018, 19:31
poavel72
и QModbus и другими...

Датчик уровня

Добавлено: 29 май 2018, 19:48
Sancho
Скетч должен работать.
1. Отсканировать микрухи - пока не увидишь адресов, дальше нечего двигаться. Проверь порт, скорость, SDA, SDL ... Прицепи часы для теста на шину, или дисплей I2C, или ....
2. После - запусти работу с модбасом без 485, через USB nano - виртуальный ком порт.
3. Уже потом занимайся 485.

Резаки подтяжки к + по шине обязательны!

Датчик уровня

Добавлено: 29 май 2018, 19:58
KSP
Железо,железо проверяйте не торопясь, а если хотите исключить связку RS-485 то можно вот так:
[spoiler]
23.jpg
[/spoiler]

И вот такой кусочек вставьте будет видно , что со входом:
[spoiler]
свет.jpg
[/spoiler]

Датчик уровня

Добавлено: 30 май 2018, 05:46
Cancertanly
poavel72 писал(а): 29 май 2018, 17:59 Возникла необходимость сделать начинку для датчика уровня на 48 значений
poavel72 писал(а): 29 май 2018, 17:59Для этого использовал три микросхемы МСР23017
а зачем такие сложности с платами расширения? почему нельзя использовать резисторы и аналоговый вход?

Датчик уровня

Добавлено: 30 май 2018, 06:41
kulibinsvv
[ref]Cancertanly[/ref], читайте полностью.
poavel72 писал(а): 29 май 2018, 17:59Развел плату, сделал подтяжку резисторами 10к к "0" входов МСР23017, спаял, прошил- и все как обычно
Надёжность считывания показаний в случае варианта [ref]poavel72[/ref] будет выше, чем предлагаемая вами.

Датчик уровня

Добавлено: 30 май 2018, 06:56
poavel72
Ребята, спасибо всем за ответы, а то совсем уже руки было опустились. Теперь уточнения- Sancho, получается при сканировании я должен увидеть адреса микрух? Насчет подтяжки шины к + я ставил резисторы на 4,7к как в хелпе flprog, это корректно? KSP-хороший вариант проверки, обязательно попробую. Cancertanly, вариант с резисторами и аналоговым входом был у меня изначально первым, но потом решил от него отказаться в пользу дискретных входов. Делить на 48 резисторов с учетом длины проводов + возможные наводки... Просто побоялся. В этом случае я согласен с kulibinsvv.

Датчик уровня

Добавлено: 30 май 2018, 08:10
Sancho
poavel72 писал(а): 30 май 2018, 06:56Теперь уточнения- Sancho, получается при сканировании я должен увидеть адреса микрух? Насчет подтяжки шины к + я ставил резисторы на 4,7к как в хелпе flprog, это корректно?
4,7 k отлично, дальше.
В флпроге - Инструменты, Шины данных, Сканирование I2C . Дальше по тексту.
Вы обязательно должны убедится, что контролер видит микрухи. С учётом всяких непредвиденных моментов, а вдруг они все брак, повесьте на шину I2C ещё и часы - должно определится 4 устройства.
Потом дальше...
Если есть желание, прицепите светодиод и подайте на него шим с выхода дешифратора, предварительно умножив на 5 ( макс 240 ).
Единственное, чего не уловил, это какая схема входных датчиков, так как
poavel72 писал(а): 29 май 2018, 17:59сделал подтяжку резисторами 10к к "0" входов МСР23017,
Обычно делают наоборот....

Датчик уровня

Добавлено: 30 май 2018, 08:30
poavel72
по подтяжке- в плате развел оба варианта, потому-что жестких указаний в даташитах не нашел, поэтому использовал подтяжку к минусу чисто умозрительно, можно переключить и на плюс. Это играет роль?

Датчик уровня

Добавлено: 30 май 2018, 08:51
Cancertanly
poavel72 писал(а): 30 май 2018, 06:56Делить на 48 резисторов
ну или использовать несколько аналоговых входов :shok:

Датчик уровня

Добавлено: 30 май 2018, 09:02
KSP
Мне вот такая информация попалась там пишут про проверку без библиотеки, и еще Вам не могли микросхемы прислать E/SO.
http://homes-smart.ru/index.php/oborudo ... yaem-porty

Датчик уровня

Добавлено: 30 май 2018, 09:06
pan
poavel72 писал(а): 30 май 2018, 08:30по подтяжке- в плате развел оба варианта, потому-что жестких указаний в даташитах не нашел
там есть встроенные резисторы для подтяжки

Датчик уровня

Добавлено: 30 май 2018, 09:13
poavel72
блин.. на микрухе белым по английски присутствует надпись MCP23017 E/SO

Датчик уровня

Добавлено: 30 май 2018, 09:21
pan
poavel72 писал(а): 30 май 2018, 09:13присутствует надпись MCP23017 E/SO
и что? это всего лишь температурный диапазон и тип корпуса.

Датчик уровня на MCP23017

Добавлено: 30 май 2018, 09:23
Sancho
[ref]poavel72[/ref],
Для такого дела было-бы дешевле 74HC165 шесть штук. На мой взгляд.
Что со сканированием?

Датчик уровня на MCP23017

Добавлено: 30 май 2018, 10:21
poavel72
Sancho, проверил сканированием шины с часами, -ничего не показывает. Часы исправные, проверял и устанавливал в ней время на другой плате. Ардуина глючит?

Датчик уровня на MCP23017

Добавлено: 30 май 2018, 10:22
Sancho
Прицепи светодиод на какой нить пин, залей мигалку.

Датчик уровня на MCP23017

Добавлено: 30 май 2018, 13:42
poavel72
blink работает, проверил на встроенном и на внешнем светодиоде. ардуино скорее всего живая, значит, где-то еще у меня косяки прячутся..

Датчик уровня на MCP23017

Добавлено: 30 май 2018, 14:14
pan
может это вообще левый камень с надписью