Как подключить датчик холла

g00d
Offline
Зарегистрирован: 16.12.2011

 Продолжаю подключение к авто и добрался до датчика скорости. Он 3 контактный, дает 6 импульсов за один пройденный метр. Причем между землей и сигнальным проводом всегда 0в. А между сигнальным и питанием разность потенциалов меняется (то есть импульсы идут). Вопрос, как теперь эти импульсы посчитать?вот если бы разность потенциалов менялась между сигнальным и землей, все бы просто было, а так никак не могу сообразить. 

leshak
Offline
Зарегистрирован: 29.09.2011

 http://arduino.ru/Reference/AttachInterrupt - если во время паралельно с замероми еще чем-то заниматься нужно.

arduino.ru/Reference/PulseIn - если нужно проще и логика "ждем, меряем пока не прийдут все 6 импульсов", потом что-то делаем.

 

 

g00d
Offline
Зарегистрирован: 16.12.2011

 Спасибо, это я знаю:) тахометр уже цеплял.

Вопрос немного в другом. Ардуина меряет напряжение между А0 и землей как я понимаю. Так вот между этими контактами у меня всегда 0В. А вот между плюсом и сигналом у меня напруга меняется. Вот теперь как "такое" подключить к Ардуине?

step962
Offline
Зарегистрирован: 23.05.2011

 Arduino -  и любой вольтметр - меряет напряжение между двумя точками с (возможно) разными потенциалами. подключите сигнал датчика к земле Arduino, а плюс - к входу (через соответствующий делитель, чтобы не получить deltaU>5В) и меряйте. Главное, чтобы у вас не было других соединений между датчиком и Arduino.

Кстати, если между землей и сигналом у вас всегда 0, а между сигналом и плюсом - переменное напряжение, то между землей и плюсом - по идее - должно быть то же самое переменное напряжение. Не проверяли?

leshak
Offline
Зарегистрирован: 29.09.2011

 >Причем между землей и сигнальным проводом всегда 0в.

Одну из двух: или у вас неправильно собранна схема и сигнальный коротнулся на землю, либо он не фига не "сигнальный" а просто еще одна земля (и про него можно забыть). "Сигнальным-то" и называется тот по которому идут сигналы, а не тот "который желтый" ;)

> А между сигнальным и питанием разность потенциалов меняется (то есть импульсы идут)

Ну значит между "питанием" и землей идут импульсы. Тогда непонятно зачем вы его обозвали "питанием". Раз по нему идут сигналы, значит это и есть "сигнальный". Вот его и заводим на цифровой пин и ловим эти сигналы.

>Ардуина меряет напряжение между А0 и землей.

Между землей и любым пином включенным на вход. В том числе и A0. Но, IMHO, импульсы удобнее мерять цифровыми пинами (A0- аналоговый), естественно приведя сигналя к TTL уровню.

g00d
Offline
Зарегистрирован: 16.12.2011

Я вот логически думал, что между землей и плюсом тоже должна быть переменка. Контакты помечены как +, - и А. Вот за сигнальный я посчитал тот который А. Инструкции на датчик нет.

Про то что можно попробовать сигнал на землю кинуть я не думал. Вообще можно ли так сделать? У меня земля с авто общая и там еще на ней висит тахометр и другие датчики. Кстати, на + и - датчика я подаю, соответственно, питание с аккума, иначе не пашет.

Про импулься все верно, буду цеплять на 3-ий пин, там где INT1. На аналоговый цепанул ради эксперимента, чтобы посмотреть че там.

step962
Offline
Зарегистрирован: 23.05.2011

 Чтобы уж совсем не бояться КЗ, поставьте в вашу линию, где удалось отследить импульсы напряжения, RC-цепочку - импульсы будут проходить, постоянная составляющая отфильтруется, КЗ нет. 

leshak
Offline
Зарегистрирован: 29.09.2011

 >Кстати, на + и - датчика я подаю, соответственно, питание с аккума

Что-то тут неладно в датском королевсте. Предположим минусе у нас напряжение V0, на плюсе V1, на A - V3

Имеем три ваших утверждения:

(1)  V0 и V1 - всегда постоянны, то есть V1-V0=CONST (по вашим словам "подаю, соответственно, питание с аккума")

(2) V3=V0 - по вашим словам (между землей и сигнальным проводом всегда 0в)

(3) V1-V3=[переменная дельта] (по вашим словам: А между сигнальным и питанием разность потенциалов меняется)

Делаем подстановку из утверждения (2) в (3), заменяем V3 на V0 (так как они равны), получаем V1-V0=[переменная дельта], что прямо противоречит первому утверждению. V1-V0=CONST.

То есть из ваших трех утвержний можно получить два противоположных вывода. Что означает "как минимум одно из них ложь" (в логическом смысле :)  )

>Инструкции на датчик нет

Метод тыка это хорошо. Но ведь можно поискать что-то подобное. Вбить туда "Как подключить датчик холла". Втроая ссылка - замечательная статья знаменитого "объяснятеля на пальцах" DI Halt-a easyelectronics.ru/datchik-xolla.html Думаю для понимания "общих принципов", и с чем такие датчики едят, что значат их ноги -  ее обязательно нужно прочитать.

Ну и саму инструкцию тоже в гугле поискать не повредит. Авось повезет. Магическое слова "datasheet", "апноуты" и т.п.

 

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

Имею ДХ - 10-30В, три провода:

Два провода питание, третий (выход) сигнальный.

Подал питание на датчик +12В.
На выходе получил:
Без магнита ~ 12В
С магнитом 0,02В

как подключить сигнальный выход ДХ к ардуино?

Через обычный диод к цифровому выходу с внутренней подтяжкой?

leshak
Offline
Зарегистрирован: 29.09.2011

> Через обычный диод к цифровому выходу с внутренней подтяжкой?

По всей видимости тут речь идет про схему описанную в разделе "диодный интерфейс" http://we.easyelectronics.ru/Shematech/soglasovanie-logicheskih-urovney-5v-i-33v-ustroystv.html   (элементы R1,D1)

Только у вас в качестве "3.3v" устройства будет выступать ардуина, а в качестве 5v из схемы - 12v датчик. 

 

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

Другими словами, так, что ли?

leshak
Offline
Зарегистрирован: 29.09.2011

Вначале оговорюсь. В схемотехнике я сам нуб. Эту схему с диодом сам два дня назад узанал/понял. Так что "могу ошибатся".

Но если не ошибаюсь, то резистор и диод нужно поменять местами. Диод катодом (острым носиком) к датчику.

И вход уже не нужно включать "с подтяжкой". Вот этот 10k это и будет подтяжка (или выкинуть ее, если внутренюю подтяжку включаете, но я бы лучше на внешней делал).

Логика работы такая:

когда на датчике 12-ть вольт. Он пытается "пропихнуть их через диод", диод, естественно запирается (не пускает ток в обратную сторону), и на вход попадает только напряжение с "подттяжки" (то есть 5v). Если же на датчике 0. То ток, с подтяжки через диод (в прямом направлении он пропустит его спокойно) целиком уйдет в ногу датчика. И на вход "останется" только 0.

Но, эта схема предполагает что "когда на сигнальном  датчика 0", то сопротивление между сигнальным проводом и землей (внутри датчика) - близко к нулю. И через него можно гнать ток в этом направлении. Так ли это  - я не знаю.

 

maksim
Offline
Зарегистрирован: 12.02.2012

leshak пишет:

Логика работы такая:

когда на датчике 12-ть вольт. Он пытается "пропихнуть их через диод", диод, естественно запирается (не пускает ток в обратную сторону), и на вход попадает только напряжение с "подттяжки" (то есть 5v). Если же на датчике 0. То ток, с подтяжки через диод (в прямом направлении он пропустит его спокойно) целиком уйдет в ногу датчика. И на вход "останется" только 0.

Но, эта схема предполагает что "когда на сигнальном  датчика 0", то сопротивление между сигнальным проводом и землей (внутри датчика) - близко к нулю. И через него можно гнать ток в этом направлении. Так ли это  - я не знаю.
 

Все правильно. А почему считаете, что лучше внешнюю "подтяжку" использовать?

leshak
Offline
Зарегистрирован: 29.09.2011

 1. Как-то спокойней когда ее видишь глазами :) - иррационально, можно игнорить.

2. Внутреняя подтяжка, если я помню правильно 2.2K, что меньше 10K, значит ток будет больше. Насколько "больше" - лень считать :)

3. Внутреняя "греет кристал", но существенно это или нет - не знаю. А ток там будет идти практически постоянно.

4. Я не знаю какой ток можно "вгонять" в дата ногу датчика (и можно ли вообще). Поэтому "чем меньше тем лучше".

Вообщем все доводы можно суммировать так: на всякий случай, так как нет 100% понимания (у меня).

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Да и еще. Используя обычный диод, когда на датчике будет 0, вы на "входе ардуины", получите 0.7V (он хоть и пропускает ток в прямом направлении, но падение все равно есть). По идее digitalRead должно нормально воспринимать эти 0.7V как "логический ноль".

Если же, будут проблемы с "детектироваинем нуля". То можно диод заменить на диод шотки, у него падение меньше. Он будет, если не изменяет память, "добавлять к нулю", не 0.7, а где-то 0.2 вольта.

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

Спасибо.

Кстати а внутрення подтяжка как физически реализована?

Схемку можно? для общего развития так сказать...

Если идти от цифрового входа на ардуине в ее недры так сказать, там что сразу резистор идет?

maksim
Offline
Зарегистрирован: 12.02.2012

Сопротивление внутренних подтягивающих резисторов 20 кОм, а реализованы они на резисторах и полевых транзисторах.

leshak
Offline
Зарегистрирован: 29.09.2011

 >Сопротивление внутренних подтягивающих резисторов 20 кОм

Выбили-таки последнюю табуретку из под моего утвержния "лучше внешний" ;) Кроме довода "мне так больше нравится" - больше ничего не осталось ;)  Почему-то в голове сидела цифра 2.2K. Полез в даташит atmega8 таки 20K. Вернее от 20K до 50K.

>Схемку можно? для общего развития так сказать...

Вот тут про это можно почитать http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html

Ну и конечно в даташите на камень схем есть много и разных. Он "первоисточник" всего.

 

kadushkin
Offline
Зарегистрирован: 18.12.2011

Подключил специфической датчик холла к АНАЛОГОВОМУ входу ардуино.

Все устраивает, на аналоговом входе значения в диапазоне 100-900, как в даташит.

Но полностью отключив датчик от ардуины имею на аналоговом входе случайные значения в диапазоне 200-300.

Беспокоит тот факт, что при обрыве провода, система будет эти случайные числа понимать как сигналы с датчика... А нужно чтобы 0 или 1023 было...

Можно как-то использовать подтягивающий резистор, при этом чтобы аналоговый вход таковым и остался...

Если я вот так притяну аналоговый вход

digitalWrite(14, HIGH);

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

analogRead будет нормально на этом порту работать?

не спалю датчик холла?

leshak
Offline
Зарегистрирован: 29.09.2011

kadushkin пишет:

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

Да. Будут значения в районе 1020-1024

kadushkin пишет:

analogRead будет нормально на этом порту работать?

Может немного начать "завышатся значения". Будет не 900, а, скажем, 950-1000. А может вообще не заметит разницы. Вообщем "проще попробовать/посмотреть". Если будет уж очень сильно влиять, то можно внешний резистор попробовать. Номиналом побольше встроенного (там кажись 20K встроенный). 

kadushkin пишет:

не спалю датчик холла?

Да вроде нет.

P.S. Все это мое IMHO :)

leshak
Offline
Зарегистрирован: 29.09.2011

Кстати, если у вас разброс от 100 до 900 (то есть "грубо" 0.48V и 4.39V), то и цифровой вход замечательно должен справится с чтением.

Вот правда разницу между 900 и 1024 он уже не сможет увидить (а значит задетектировать "обрыв").

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

kadushkin пишет:

Беспокоит тот факт, что при обрыве провода, система будет эти случайные числа понимать как сигналы с датчика... А нужно чтобы 0 или 1023 было...

Предусмотреть программное детектирование "обрыв линии" по величине разброса - все равно полезно.

leshak
Offline
Зарегистрирован: 29.09.2011

Andrey_Y_Ostanovsky пишет:

kadushkin пишет:

Беспокоит тот факт, что при обрыве провода, система будет эти случайные числа понимать как сигналы с датчика... А нужно чтобы 0 или 1023 было...

Предусмотреть программное детектирование "обрыв линии" по величине разброса - все равно полезно.

Дык никто с этим не спорит. Просто вариантов этого может быть несколько.

1. Как изначально предполагал топик-стартер - с помощью аналогового 
2. Если датчик ВСЕГДА дает сигналы с какой-то переодичностью. То можно ловить обрыв если слишком долго сигналов нет
3. Попытатся самому дать на линию сигнал слабенький и подергать выход. Если "легко дергается" - значит обрыв. Если "стоит" - значит датчик есть (при условии что рабочий датчик - четко держит линию в каком-то значении). Сделать что-то вроде "самотестирования" (при включении или с какой-то переодичностью).

kadushkin
Offline
Зарегистрирован: 18.12.2011

Спасибо за советы.

Сделаю программно.

Еще посоветуйте такой момент: датчики для надежности спаренные (2 в 1) - основной и дополнительный....( так сделано)

Так вот как можно реализовать алгоритм этой самой надежности?

Ну сравню я показания этих датчиков, если они равны (с каким-то допуском), то оба они работают и я возьму основной датчик за базу.

А если не равны, то буду считать это ошибкой, а что за базу брать??? основной или доп.? какой из них барахлит?

Или спаренный датчик для того и нужен, чтобы только оценить что есть разница в показаниях и выдать АЛАРМ!!!???

 

leshak
Offline
Зарегистрирован: 29.09.2011

kadushkin пишет:

Или спаренный датчик для того и нужен, чтобы только оценить что есть разница в показаниях и выдать АЛАРМ!!!???

Да. Конечно.

Если два человека дают вам два взаимоиключающих утверждения - с уверенностью вы можете утверждать только "МИНИМУМ один из них врет. Но кто, и не врут ли оба - уже не скажете.

Точно так же как и "оба совпадают" - не означает 100% что оба работают. Особенно если у них есть общие составляющие (например питание или земля).

Повыстить надежность - взять еще больше датчиков.

Из опыта авиации - желательно работающих на другом принципе (пусть и с меньшей точностью). То есть - не Холла, а какую-то альтернативу.

Еще можно попытатся сделать тестирование датчика, самому создавая магнитное поле. Поставить возле него какую-то катушку и на нее подавать сигналы.  А потом, через датчик, смотреть "слышно или нет". Вообщем кроме того что вы меряете датчиком, сделать еще и "генератор тестовых сигналов".

Вообщем параноится по поводу "надежности" - можно почти бесконечно :) Вспомнить потом что сам контроллер - тоже может заглючить :)

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Если кто то врет, то нужно использовать сохраненное значение. Если сбои повторяются, только тогда аларм. На счет самолетов, согласен с Лешаком, я и сам самолетами занимался :)

kadushkin
Offline
Зарегистрирован: 18.12.2011

Да не так-то просто обработчик датчиков холла (ДХ) замутить...

Вот мое видео (выведено с помошью TVout):

http://youtu.be/yFc_r92gnAc

Тут DH1 - первый основной ДХ

DH11 - первый вспомогательный ДХ

DH2, DH21 - вторые ДХ.

Видно как значения скачут, хотя датчики вообще к ардуине не подключены.

При подключении датчиков:

DH1=DH11=614 (например) плюс-минус 2

DH2=DH21=400 (например) +-2