Датчик Холла

Есть такой интересный эффект — если через квадратную проводящую пластину гнать постоянный ток, а саму пластину пронизать магнитным полем, чтобы линии индукции проходили через ее сечение, то летящие по пластине электроны отклоняются силой Лоуренса.

А раз так, то с одного края электронов будет больше чем с другой. Возникает разность потенциалов, то есть напряжение. И чем больше ток и сильней поле, тем большая разность будет. Это и есть эффект Холла.

Дальше дело за малым — берем источник стабильного тока, чем стабильней тем лучше, ведь от стабильности зависит точность показаний. Прогоняем постоянный ток по пластине, ловим да усиливаем разность потенциалов до осязаемых величин. В результате получаем отличную вещь — датчик магнитного поля, он же датчик Холла.

Например такой:

Моделей существует целая прорва. В чистом виде, правда, встречается редко. Обычно элемент Холла с чем нибудь да совмещен. Либо, как тут, с усилителем, либо с силовыми ключами, как в датчиках из компьютерных бесколлекторных вентиляторов — там он сразу же коммутирует обмотки, выполняя роль электронного коллектора. Правда на некоторых старых моделях вентиляторов можно обнаружить и целые микросборки из «чистого» датчика, усилителя и силовых ключей, но вот уже лет 5 мне такие не попадались.

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

Подключение проще простого — подал питание, снял сигнал. Питание по даташиту написано двуполярное, но ничего не мешает подать и однополярное. Просто в этом случае ноль сигнала у нас будет не 0В а Vcc/2. У меня на Pinboard напряжение в магистрали питания около 4.8 вольт, поэтому на выходе датчика 2.4 вольта в подвешенном состоянии.

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

Это все интересно, но что с того? Куда это можно применить?
А применений датчику можно придумать вагон и маленькую тележку. Например, бесконтактные концевые выключатели.

Причем, в отличии от герконов, датчики эти почти вечные — там нет ни единой движущейся части.

А если совместить датчик с магнитом и подсунуть ему шестеренку, что будет замыкать через себя магнитный поток, то можно легко получить датчик скорости вращения. Когда зубец будет ближе к датчику, то сопротивление магнитному потоку будет ниже, а значит и его сила будет больше. А на межзубцовых промежутках все наоборот. В результате, на выходе датчика будут импульсы сходные с формой зубов шестерни, а уж посчитать их не составит труда.

Или, например, надо нам замерить БОООЛЬШОЙ постоянный ток. Скажем идущий к драйверу двигателя. С малыми токами все ясно и так — ставим шунт и снимаем с него падение напряжения. С большими токами финт прокатит плохо — шунт будет лишней нагрузкой, сжирающей мощность, греющейся. Да и сделай его еще из подручных средств… А ведь можно сделать все куда проще. Заворачиваем провод в катушку, опоясываем магнитопроводом, а в разрез пихаем наш датчик. Причем необязательно делать много витков — если ток большой, да датчик чувствительный, то и одного-двух витков хватит (кстати, есть и неплохие промышленные датчики постоянного тока — LEM делает).

Ну и вот такой практический примерчик — на базе датчика SS495A сварганил простейший цифровой тахометр :)

Схему собрал на своей демоплате:

Получилась такая вот конструкция:

Включил моторчик, магнитик завертелся, а на выходе датчика Холла пошла вот такая вот картина:

Вообще я сам удивился насколько четкие и резкие фронты. Я думал будет подобие синуса. Ан нет, магнит оказался мощный (ниодимовый из лазерной головки CD-ROM’a) и видимо он сразу же зашкаливает наш датчик.

Дальше, на базе ядра диспетчера, описанного в не так давно, набросал по быстрому программку (только функциональная часть):

HAL.c

1
2
3
4
5
6
7
8
9
10
11
12
13
inline void InitAll(void)
{
//InitUSART
UBRRL = LO(bauddivider);
UBRRH = HI(bauddivider);
UCSRA = 0;
UCSRB = 1<<RXEN|1<<TXEN|0<<RXCIE|0<<TXCIE|0<<;UDRIE;
UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1;
 
//Init Interrupts
MCUCR |= 1<<ISC00|1<<ISC01; 	// Конфигурируем прерывание по фронту
GICR |= 1<<INT0;		// Разрешаем прерывания
}

HAL.h
Там вообще много всего, в первую очередь всякие байты и выводы описаны, но нам интересен сейчас макрос:

1
#define SEND(X) do{buffer_index = 1; UDR = X; UCSRB|=(1<<UDRIE); }while(0)

Это макрос отправки данных из буффера на прерываниях. Макросы я рекомендую называть заглавными буквами — сразу будет видно, что это макрос, а не функция. А конструкция do{….;….;….;….; }while(0) позволяет запихать в один макрос дофига всяких функций, не опасаясь того, что эту конструкцию перекосит на каком-нибудь if-then-else. Заключенная в блок do{ }while(0) она выполнится как один оператор, а нулевое условие while(0) будет выброшено оптимизатором, так что оверхеда по коду тут не будет.

Ну и, напоследок, код отправки данных из буффера на прерываниях. Шлет в USART данные из буффера, игнорирую данные с кодом 0x00 — их генерит функция itoa когда значение меньше чем заданная разрядность.
GCC-RTOS.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ISR (USART_UDRE_vect)		// Прерывание по опустошению буффера УАПП
{
if (buffer[buffer_index]) UDR = buffer[buffer_index];  // Если текущее значение не 0х00 вывод
 
buffer_index ++;			// Увеличиваем индекс
 
if(buffer_index == buffer_MAX)  	// Вывели весь буффер? 
	{
	UCSRB &=~(1<<UDRIE);	// Запрещаем прерывание по опустошению - передача закончена
	}
}
 
 
void Catch(void)    // Задача подсчета и обработки данных. 
{
u16 RPM=0;
SetTimerTask(Catch,2000); 	// Время подсчета - 2с
 
buffer[7]=0;				// Зануляем знакоместа в буффере
buffer[8]=0;				// Чтобы там не было пустых мест
buffer[9]=0;				// Иначе будет гнать при снежении оборотов
 
RPM = Cycle*30;			// Вычисляем число оборотов в минуту
 
itoa(RPM,buffer+6,10);		// Перевеодим его в ASCII строку. Вписывая в наш буффер
 
SEND(buffer[0]);		// Запускаем передачу (макрос в файле HAL.h)
 
Cycle = 0;			// Обнуляем счетчик циклов
}

Сырки для этого примера. Не обращайте внимания на кучу мусора в коде. Это так, черновой набросок. Да и пример отправки данных на прерываниях я скоро опишу подробней.

А вот как это выглядело вживую:

109 thoughts on “Датчик Холла”

  1. Ди, а можеш написать статейку с реальным примером по индукционному датчику положения?
    Всмысле Linear Variable Differential Transformer. (незнаю как это по-русски в книжках пишеться)

    вот статейка: http://www.electronics-tutorials.ws/io/io_2.html (пролистать немного ниже).

  2. >#define SEND(X) do{buffer_index = 1; UDR = X; UCSRB|=(1<<UDRIE); }while(0)

    А зачем здесь do/while? Если нужно выделить блок кода, то достаточно одних фигурных скобок. А блок do/while(0) для другого применяется — для быстрого выхода из множества вложенных условий по break. Типа замена exception handling.

    1. Ну вот, например, есть у нас макрос

      SEND(X) оформленный как {;…;}

      Вписываем мы его в конструкцию

      if ( ) SEND(X);
      else
      bla();

      получаем при развертке

      if( ) {;..;..;} ;
      else
      bla();

      Видишь, возникла дополнительная ; который закрыла нам if. В результате логика порушилась.

      Да, можно макросы писать и на скобках, но тогда в коде нельзя после них ставить ;

      А по инерции поставить ; запросто. В результате будет бага которую хрен найдешь.

        1. Она не скомпилится если у тебя там всего один if-else, а если целое дерево? Тогда этот else пристроися куда нибудь не туда. Вот тут то тебя белая лисичка за задницу и укусит.

    1. Да тож так же , как и диодиком помигать ))
      делаешь ногу подцепления д.Холла на pull-up и снимаешь показания :)
      как только магнит «замкнёт» датчик, так появится низкий уровень на ноге, как низкий появился, снимаешь пинг с неё и выводишь лог. единицу (или ноль) на порт с светиком :)

  3. Осталось написать статью: где надыбать магнитики =)) и тогда тема: датчик холла + магнит будет раскрыта))

    Да, кстати, нужно снять видео, что будет, если магнит отодвинуть от датчика =) Уменьшится магнитный поток => мы должны увидеть что то типа синусоиды))

      1. В дохлых или ненужных винчестерах. Там в линейном двигателе привода головок есть от 1 до 4 (смотря какой винт) очень мощных магнитов, а еще для парковки головок при выключении — маленький прямоугольный или кубиком магнитик со стороной 2-4мм. Его очень удобно использовать со всякими датчиками.
        Еще в винтах в головках есть магниторезисторы с офигенной чувствительностью. Была мысля сделать на них компас, но больно уж они мелкие, а у меня уже глаза на те, что лет 15-20 назад…

          1. Да вроде они тонкопленочные, в заднем зазоре головки. К каждой головке идет 4 конца, 2 — на запись, там все еще обмотка из одного или нескольких витков или слоев металлизации (в старых провод был), а 2 других — на магниторезистор для чтения. Но все мелкое, вместе с ферритовым магнитопроводом залито и заполировано. Когда-то читал, что при переходе с головок воспроизведения с обмотками на головки с магниторезисторами плотность записи сразу возросла в 3 раза из за меньших размеров и большей чувствительности головок с магниторезисторами. Это было после емкостей в 2-4 Гига. Сейчас все винты с магниторезисторами. Вот я и думаю, если они прекрасно считывают микронные домены, то чувствительность должна быть офигенная. Сейчас еще и на вертикальную запись перешли, домены еще мельче стали. Обычно на коромысле с головками, прямо на шлейфе, находится микросхема с усилителями, на 4 или 8 головок максимум. Реально стоят от 2 до 4. Можно попробовать к головке полюсные наконечники приделать, чтобы больше магнитного поля собрать и через головку пропустить. Чтобы ее магнитопровод меньше шунтировал, сошлифовать местами. Да уж больно все мелкое, и залито… Я из винтов обычно вытаскиваю магниты привода головок, парковочный магнитик, да подшипники привода головок и шпинделя. Уже с десяток списанных разобрал.

    1. Детский «магнитный конструктор» GeoMag — стальные шарики + пластмассовые палочки для соединения с двумя магнитами на концах. Минимальный набор (стоит копейки, семь, что-ли, «палочек») дает нам 14 мелких, но достаточно сильных цилиндрических магнитов + кучку шариков (фетиш детства, раньше подшипники ломали!). У меня на трёх (реально 6) таких магнитах крепится кабина Р/У самолёта, пока в полёте ни разу не отваливалась :)

      Подсказка: к этим магнитам очень легко припаять проводки (только не стОит их перегревать) и подключаться, например, к батарейкам (и собирать сами батарейки в «кучку» для получения нужного напряжения).

  4. Добрый вечер. Очень актуальная для меня статья. Необходим мне токовый датчик на ток срабатывания 50ма. Максимальный ток в цепи до 3А. Сейчас решаю что выбрать в качестве датчика: датчик Холла или мотать токовое реле на основе геркона. Что посоветуете? С чем меньше заморочек?

    1. Видел недавно статью на эту тему в Интернете. Там один иностранец попробовал сделать компас на 2 датчиках Холла в дифференциальном включении. Жалуется, что из за малой чувствительности получается погрешность направления на южный полюс порядка 15 градусов. Но у него датчики голые. Думаю, если сделать полюсные наконечники (типа стрелки компаса из пермаллоя, в середине разрезать и вставить датчик), чувствительность должна в несколько раз повыситься.
      Есть микросхемы — электронные компасы, 38$, но они мне недоступны, а заказывать по Интернету — слишком много мороки (для меня, по крайней мере).: http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=52

    2. Давно интересует тот же вопрос, но всё никак не соберусь попробовать. Навскидку удалось обнаружить статью (http://ams.allenpress.com/perlserv/?request=get-document&doi=10.1175%2FJTECH1860.1&ct=1) об использовании датчиков Холла SS495 в качестве своеобразного компаса на метеозонде. Вроде бы, в нашей деревне SS495 есть в наличии, но смогу их раздобыть не ранее чем через две недели. В аналоговой схемотехнике не особо силён, м.б. кто-нибудь из более сведущих подскажет по примерной схеме: 2xSS495 в качестве сенсоров, TL431 как ИОН, какой-нибудь операционник (что посоветуете? OP90, упомянутый в статье, найти не смогу), многооборотный подстроечник для настройки — взлетит?

      С уважением!

      1. Чет в схему вкурить не могу.

        Если у него диф включение из двух, то почему он сразу не загнал их на вход одного ОУ (да хотя бы инструментальника). Опять же есть сомнения что это что то даст. В общем, сегодня вечерком наверное проверю теорию. В качестве диф усилка заюзаю осциллограф :)

        1. Добрый вечер! Прошу прощения за то, что ввел в заблуждение — в схеме по ссылке датчик только один. Поставить два под углом 90° это уже моя идея. Будет интересно узнать результат эксперимента, т.к. сам смогу этим заняться не менее чем через две недели. Вот тут (http://letsmakerobots.com/node/12909) граждане тоже пытаются сделать компас из датчиков Холла; мнения участников разделились — у большинства не работает :) Но у метеорологов, вроде бы, что-то получилось.

          PS. Спасибо за easyelectronics — после многолетнего перерыва на программерство снова занялся радиогубительством! :)

  5. «В чистом виде, правда, встречается редко…» а вот у нас в Иркутске — с точностью до наоборот! ))
    В чистом виде есть ( ДХК-5) ,а вот сколько искал сборки, так и не нашел ))

    1. Вот что правда, то правда. ДКХ-0.5 за рупь пучок купить можно, а вот SS495 ни в какую
      Пришлось заказывать. Наш вирпильский люд их вместо резюков в джойстики втыкает. Вещь незаменимая. :)

        1. Ага, а эта хрень с проводками и термоусадкой это датчик холла. Хм… надо посмотреть куда можно ее у себя присунуть.

          З.Ы.
          У тебя приус? Ы! А как с обслуживанием? Кто их у нас берется ремонтировать если чо?

          1. Это не у меня Приус, это у нас на кафедре Приус, а я на нём делаю исследовательскую лабораторию…..
            Не знаю как у вас, а в Харькове есть станция занимающаяся обслуживанием и ремонтом Приусов….

  6. DI HALT, спасибо за интересный и полезный сайт. Все понятно изложено, а то книги — иупой перевод даташитов. Хрен что поймешь.
    Читая про датчики Холла возник вопрос. А нет ли готовых датчиков в подобном корпусном исполнении, реагирующих не на магнитное поле, а на наличие металла??

    1. Скорей всего нет, не встречал. Хотя могут быть, правда там должна быть куда более сложная структура. Т.е. генератор, какая то индуктивность. В общем, металлоискатель в миниатюре :)

      1. Я тоже не могу найти, но , думаю, должны быть. Все же с магнитами довольно неудобно. А готовые индуктивные датчики либо фирменные дорогие, либо наши достаточно громоздкие. В любом случае спасибо за ответ.

  7. >В зависимости от полярности стороны магнита, напруга либо обвалится в ноль, либо подскочит до максимума. Ну и, в зависимости от расстояния, может принимать промежуточные значения, линейно завися от силы магнитного поля.

    Не линейно, потому что ведь поле убывает пропорционально квадрату расстаяния. Гиперболически?…

  8. Был у меня один случай. Сломался вакуумный загрузчик Shini (производство изделий из пластмасс). Работает он следующим образом. Его устанавиливают на приемник сыпучего сырья (гранулы, дробленная отработка) термопластавтоматов и экструдеров. Вакуумный шланг в емкость с сырьем. Снизу загрузчика находится заслонка, которая под воздействием вакуума захлопывается, если сырья достаточно, оно не дает захлопнуться заслонке. На самой заслонке находится магнит. Снаружи стоит датчик, который следит за наличием сырья, если заслонка открыта (есть сырье), загрузчик ждет, как только заслонка закроется, это означает, что нужно засосать сырье. Загрузчик работает по таймеру, время засасывания сырья, и время ожидания. Когдя я отремонтировал загрузчик, сделал ошибку при подключении датчика. И он благополучно сгорел. Сижу, матерюсь. Думаю что делать. В общем, позвонил заказчику запудрил голову, отпедалился, что и датчик по ходу сгорел. Стал звонить по конторам. И сел на задницу. Оказывается, что магнитные датчики положения в принципе существуют, но в городе их нет. И в Москве их нет. Стал репу чесать. Сначала разобрал датчик. И что вы думаете, там оказался простой геркон. Проехался по магазинам, нашел советские герконы. Проверил, магнита датчика не хватило для замыкания советского датчика. Тут я вспомнил, что читал эту статью, и существуют интегральные датчики холла. Приехал в магазин, там мне сказали, что у них есть датчики с цифровым и аналоговым выходом. Выбрал с цифровым выходом, напряжение питание от 3 до 30 вольт. Еду, довольный, домой, подключаю к макетной плате, и благополучно въезжаю в пень. Выяснилось, что датчик меняет свое состояние только при перемене полярности магнитного поля. А заслонка так двигается, что полярность магнитного поля не меняется. Пришлось ехать за датчиком с аналоговым выходом. Подключил датчик, чтобы понять как он работает. Напряжение питание этого датчика от 3 до 6 вольт. Подцепляю вольтметр, вольтметр на выходе датчика показывает половину напряжения питания. Подношу магнит одной стороной, напряжение начало уменьшаться, поднес магнит другой стороной, напряжение увеличилось. Ну думаю, ага! Быстренько накидывыю схемку с триггером шмидта-хрен вам нате, из-под кровати. Хрен, по колено хрен… Не получилось. Напряжение изменяется незначительно, потому триггер шмидта и не пошел, вполне возможно, что что-то не расчитал. Плюнул, время-то поджимает. Накидал схему с компаратором. Урря! Все получилось. Собрал вакуумный загрузчик, работает, сволочь! Отдал его заказчику, деньгу за ремонт забрал. Потом задумался, я ведь по сути разработал магнитный датчик положения. Ведь бывают ситуации, когда нужен датчик положения, изолированный от некоей среды. Вода, продукты нефтепереработки. Так что схемку сохранил. На будущее.

    1. Не проще ли было зайти в магазины торгующие охранными товарами и прикупить там герконовые датчики. Они чувствительные как незнаю что. Либо выдрать из герконовых реле советских. Тоже хорошие.

  9. Согласен, это было бы намного проще. Мой принцип в работе по возможности, минимальные вмешательства. Речи нет лопухнулся, датчик спалил. Меня время поджимало, это раз, второе, пробовать варианты, ездить по городу в поисках герконов, магнитов. Про охранные компоненты как-то забыл, хотя и работал монтажником ОПС. Но самое главное, как-то была ситуация, нужно было сделать изолированный от некоей среды датчик положения. Так что даже и лучше. Заказчик не жаловался. Был как-то у них, работает. А там режим работы предприятия круглосуточный.

  10. Отличная статья! Как раз искал информацию и полезные советы о датчиках на эффекте Холла. А можете посоветовать, как можно завести информацию от двух датчиков на один аналоговый вход АЦП МК? или есть ли AVR c двуми аналоговыми входами?

      1. Извините, я видимо где-то что-то недопонял. я думал, что вход AVCC — это аналоговый вход МК. Посмотрел даташиты на ATMega16, ATMega8, ATMega128 и AT90CAN32/64, там только по одной ножке с названием AVCC. Я немного озадачен, плиз, помогите разобраться!

        1. AVCC это вход аналогового питания. Обычно туда подают +5В через дроссель. Ну и кондер еще на землю. Запитывать надо в любом случае.

          AREF это либо вход опорного напряжения, либо выход внутренней опоры. Обычно опорное напряжение берут изнутри (либо с AVCC) и его через кондер просто на землю. Аналоговые входы это выводы ADC0…8 вот ими можно мерять напряжение. Не одновременно, но по очереди, меняя в регистре ADMUX номер вывода на котором меряем.

  11. А как с помощью такого датчика замерить ток двиателя?
    Вернее, мне надо, чтобы при определенном токе контроллер отключал двигатель. Как этот порог настроить? В выходную цепь датчика поставить подстроечник?

    1. Тут думать надо. Во первых у движка есть пусковой ток (2..3 номинальных) и если у тебя будет вышибать защиту во время пуска эт совсем не то. Во вторых подстроечник может уползти от вибрации. Лучше бы на ОУ сделать схемку масштабирующую.

  12. А не подскажете ли, как можно подключить датчик к1116кп1 (RAFIH-JC-30)? Вроде бы точно такой же, как в вашем примере, но только пятиногий. Весь интернет перерыл, ни даташита нигде, никакой информации, только предложения купить =) Может быть вы с такими когда нибудь сталкивались?

      1. Доброго времени суток! Хотелось бы побеседовать о возможности использования датчика Холла для замера скорости гарпуна подводного ружья в воде. Если нетрудно — отзовитесь на мой E-mail. Спасибо.

        1. Возможно, но зависит от материала гарпуна. Думаю можно будет делать замер момента нажатия на спусковой крючок и ловить момент окончательного ухода гарпуна. Зная его длину легко вычислить скорость.

          1. Материал гарпуна — либо н/с, либо «чёрная» сталь с покрытием. Вот — как раз эти два момента и хочется отловить для начала. Завтра в шесть часов вечера мы — те кто начал заниматься замерами скорости — встречаемся в пивном баре Ёрш на Проспекте Мира — на ежемесячной встрече подводных охотников. Хотелось бы обсудить возможности датчиков Холла очно.

              1. :-) Привет Челябинску! У вас, кстати, делают одно из лучших отечественных подводных ружей — Таймень. Может тогда по эл. почте пообщаемся — вопросов много — наверное не стоит перегружать форум?

                  1. Тритон, Барракуду и Кобру также делают в Челябинске — фирма «Тритон-плюс». Если честно — даже гидропневмат Кобра стреляет хуже чем Таймень — у меня оба эти ружья — есть возможность сравнить.

                    1. Ну может быть. Не охотник.

                      Просто к созданию Тритона приложил руку мой батя (они вместе с Нефедовым в далеких 90х создали собственно фирму Тритон) потом правда совместный бизнес не сложился и они разошлись, хотя и остались друзьями. Ну и я с создателем всей линейки тритонов нонче общаюсь регулярно :)

  13. Спасибо за статью. Тема еще актуальна? Надобно сделать десяток дешевых датчиков короткого замыкания. Идея в том, чтобы при КЗ сработал триггер и в следующем полупериоде симистор не открылся. 220 В, нагрузка 1-2 кВт. Эксперимент: вытащил из вентилятора ATS276 (с виду), намотал два витка провода и разряжал на него конденсатор. Срабатывает 50 на 50. Причем от положения и количества витков почти не зависит. Как посоветуете, стоит смотреть в этом направлении, возможно ли вообще сделать надежную защиту на датчике Холла, поделитесь соображениями. Извините, что к Вам, больше ничего внятного в интернете не нашел.

  14. Уважаемый автор темы!Помогите в решении одной проблемы.Суть в том что я владелец мотоцикла и так случилось что на нём спидометр работает как раз (как я подозриваю)от датчика хола расположенного на оси переднего колеса,предыдущий хозяин этот датчик за каким то лешим выковырял из своего места,идентифицировать деталь нет возможности,так что спидометр не работает.Но к месту где стоял датчик идёт три провода.Прочитав тему подозреваю что принцип работы моего спидометра схож с тем что описан в теме.Подскажите что можно сделать в данной ситуации.Буду признателен!

  15. Di, выпаял из CD привода 3 датчика. На спине у каждого написано «IF» (или «lf») и стоит точка. По 4 ноги, размерами примерно с smd 1206. Может встречался, не подскажешь, куда копать чтобы опознать?

  16. хм. а почему выбран такой алгоритм расчета?
    насколько точнее было бы подключить датчик к таймеру и по каждому тику считать считать время на таймере, которое отправлять на консоль пять раз в секунду? народная tiny2313 с такой задачей справилась бы?

      1. ну то есть можно было и по тому алгоритму? (кажется, ты и предлагал такую идею). просто понять бы, какой подсчет будет точнее.

        для начала концепт следующий: хочу водрузить датчик холла на корпус дифференциала старого внедорожника, а магниты — на торцы четырех болтов, которыми карданный вал крепится к фланцу дифференциала (боюсь наврать в терминологии) по идее дисбаланса быть не должно.
        тинькой считать импульсы и выводить время между ними на серийный порт, к которому подключить ipod. для айпода уже есть отличный софт cadashboard, который считывает пять раз в секунду текстовую строчку с пятью значениями, разделенными табом, на скорости 9600 бод. (автор выложил исходники, и на github есть видео, как оно работает — очень даже симпатично! зацени!)

        По предварительным прикидкам с моими передаточными числами и шинами на скорости 60 кмч такая конструкция будет генерировать 112 импульсов в секунду. мне интересен диапазон скоростей от 5 до 120 кмч. то есть от 9 до 224 импульсов в секунду. насколько я понимаю, на медленных скоростях погрешность будет меньше (время между импульсами — 1/9 секунды=111мс, тут миллисекундой дольше или быстрее — особой разницы нет), а вот на высокой скорости автомобиля уже интереснее: при 200 импульсах (скорость порядка 100 кмч) — 5мс, а при 224 (120кмч) — 4,4мс. и тут меня волнует вопрос: как на работу таймеров будет влиять отправка строчки в серийный порт?

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

        заодно спрошу про сопряжение с айподом: если питать устройство от 5 В, достаточно использовать пару сопротивлений? или тини не будет понимать 3,3В как высокий уровень и надо городить конвертер уровней?

        еще, чем соединять датчик с микроконтроллером? (может, уже известные марки кабеля для автомобильной индустрии? нужно ли защищаться от помех?)

        если получится с одним датчиком — можно попробовать развить тему, снимать показания с других датчиков (температура ОЖ, вольтметр, тахометр, датчики холла на каждое колесо — тогда уже впору покупать айпэд))

        сорри за такое количество ночного бреда :-)

Добавить комментарий