Матричное соединение датчиков Холла A3144

Всем доброго времени суток!
Пытаюсь матричным способом подключить датчики холла A3144 к ардуино. В начале я подаю сигнал на строку, потом слушаю в какой столбец пришел сигнал. То есть ножкой датчика vcc я подключился к строке, а ножкой out я подключился к столбцу.
Мне не совсем понятно как подключить диоды. Мне важно чтоб можно было получать информацию с нескольких датчиков сразу.
Всем большое спасибо за ответы. Буду очень рад примеру хотя бы для одного датчика.
P.S датчик подает логический 0 когда обнаружено магнитное поле.

О каком количестве речь?

Сразу очень растяжимое понятие. Если совсем одновременно каждый датчик, то датчики можно подключить к регистру типа SN74HC165N и по команде считать, данные запомнятся в регистре и их можно считать в МК уже постепенно.

25 датчиков.

Под сразу понимается что в один момент времени рядом с несколькими датчиками может быть магнит. Я читал про регистры, но вопрос собственно можно ли подключить датчики матричным способом, если можно то интересует расположение диода.

И что? 5 микросхем последовательно и один вывод МК.


На нужную строку подаешь низкий уровень, а на D3- D4 считываешь значения.
Если сделать 3 строки и выделить свободный порт МК под столбцы, то получим 3 байта с информацией. Но это только 24 датчика. А так надо 5 строк и 5 столбцов.
PS. на D3- D5 нужно включить внутреннюю подтяжку.

Нужно перемыкать строки и столбцы матрицы что бы считать состояние контакта. У тебя нужно считать состояние датчика. Если подавать напряжение на группу датчиков то возникает вопрос а как себя ведут выходы датчиков, на которые не подано напряжение? Сколько времени надо датчику что бы после подачи напряжения на выходе появились валидные данные? Диод надо ставить так, что бы напряжение высокого уровня не проходило на отключенные датчики. Быстро опросить такую матрицу не получится.

2 лайка

с матрицей у вас не получится считывать несколько датчиков сразу, только по очереди

1 лайк

Матрица - это опрос, растянутый во времени.
В один момент времени - т. е одновременно.

Это надо взять соответствующий МК, напр , STM32 и, чтением порта, сразу получить значение со всех датчиков

P.S.
@MMM уже написал, не заметил.

Может я не правильно выразился, постараюсь более подробно описать что мне нужно.


Посмотрите пожалуйста, рабочая ли у меня схема.

D2 - D3 это строки
D7 - D8 это столбцы

Я планирую поочередно включать каждую строку, а следовательно питать все датчики в строке. Далее поочередно идти по столбцам смотреть на какой вход поступил логический 0 (обнаружен магнит). Так как магнит может располагаться сразу у нескольких датчиков, я поставил диод катодом к столбцу (правильно ли я поставил диод?)

Это моя схема, только наоборот.
На D7 и D8 надо резисторы на землю. На моей надо было включить подтяжку на МК внутреннюю.

Не понравилась схема на диодах? Могу нарисовать на транзисторах)

да я то че? Это вы ТС-у рисуйте :slight_smile:

ИМХО, не поможет, т.к. активный лог. 0.
Надо делать как #7, и, INPUT_PULLUP.

Только непонятно зачем сразу надо знать состояния датчиков строки если нужна реакция на каждый датчик.

Если считывается с D7 D8 то правильно. Но этого мало. Входы MK надо на массу через резистор 10к замкнуть

Надеюсь я правильно понял вашу схему? Постарался изобразить ее.

Столбцы D7 - D8 включаю как INPUT_PULLUP
Скажите пожалуйста какое состояние по умолчанию должны иметь пины строк?

Д2 и Д3 изначально имеют высокое состояние. Все датчики отключены. При этом на Д7 и Д8 высокое состояние.
Д2 устанавливаем в низкое состояние. Включаются датчики U5 и U6. Ждем пока они устаканятся. Это по даташиту или экспериментально. Читаем пины Д7 и Д8. Переводим Д2 в высокое состояние.
Думаю можно обойтись даже без резисторов.

При составлении матрицы не забывайте про ток, который способен выдержать пин МК - 40мА - это предел, лучше брать существенно меньше
т.е не более 8 датчиков на строку, а лучше 6-7