Тахометр на основе датчика Холла. Раздел: Периферия.

Eugene's MCU

Воскресенье, 08.06.2014, 08:41

Главная | | Мой профиль | Выход | RSS
Меню сайта
Категории каталога
Рекламный блок





Рекомендовать этот сайт:

Главная » Статьи » Применения » Периферия


Тахометр на основе датчика Холла
 
       Принцип действия интегральных датчиков Холла заключается в наведении разности потенциалов на границах полупроводниковой пластины с током, помещённой во внешнее магнитное поле. Усиленная  датчиком разность потенциалов прямо пропорциональна напряжённости поля в области его установки. Таким образом, для измерения частоты вращения достаточно разместить датчик вблизи вращающейся детали с закреплённым на ней магнитом, при этом на выходе появится сигнал с частотой равной частоте изменения напряжённости магнитного поля.
 
       
 
       Широкое распространение в последнее время получили недорогие датчики Холла от компании Honeywell серии SS49. Компонент реализован в корпусе TO-92, обладает хорошей чувствительностью и рабочим диапазоном температур от -40°С до 100°С. В отсутствии магнитного поля выходное напряжение SS49 равно половине напряжения питания - Ucc/2. Сигнал изменяется относительно указанного уровня в зависимости от направления и напряжённости внешнего магнитного поля.
  
       Для оцифровки сигнала используем полуволну расположенную выше уровня Ucc/2 и схему на ОУ LM324 в конфигурации компаратора:
       Делитель R1/R2 задаёт порог срабатывания компаратора и устанавливается вручную в зависимости от уровня сигнала на выходе датчика (расстояния до магнита, его параметров). Указанные на схеме номиналы резисторов R3 и R4 задают входной гистерезис компаратора шириной 25мВ, исключая дребезг при переключении. Для измерения частоты, полученный на выходе схемы цифровой сигнал, подаётся на вход внешнего прерывания микроконтроллера INT0.
  
       Предлагаемая программа, формируя прерывания по каждому фронту входного сигнала, считывает значение таймера Т1 микроконтроллера за прошедший период и вычисляет значение измеряемой частоты.
       Установленный на платку 8x15 мм вместе с блокировочным конденсатором, датчик хорошо размещается внутри кабельного ввода PG7:  
 
       Исходный код на С для Atmega16: смотреть .htm,
:                                                 Схема: смотреть .gif
                                                              DataSeet SS49 
       P.S.:
       - для измерения частоты вращения двигателя автомобиля, датчик Холла и входные цепи достаточно заменить простейшим формирователем импульсов для сигнала с катушки зажигания (смотреть схему). При этом в программе необходимо учесть разницу между частотой вращения двигателя и частотой следования импульсов на катушке зажигания:
 
       FrqMn=(60/(2*Period*64e-6)); где 2 - множитель, учитывающий разность указанных частот. 
 
       - гарантированная точность не менее 0,2%.
       - прошивка (HEX).


При использовании материалов сайта ссылка на данный источник обязательна.

Категория: Периферия | Добавил: eugenemcu (19.01.2009) | Автор:

Просмотров: 17442 | Комментарии: 13 | Рейтинг: 4.7/3 |
Всего комментариев: 13
0
* 1 (11.01.2010 00:36) [Материал]
Уважаемый автор! Нельзя ли изменить прошивку так, что бы тахометр имел верхний предел до 1000 об/мин, но измерял с точностью до десятых (возможно придется увеличить число импульсов датчика за каждый оборот)? Если можно, ответьте по почте.

0
* 2 eugenemcu (12.01.2010 20:30) [Материал]
Насколько я себе представляю, погрешность такого тахометра будет определяться двумя моментами:
1. Погрешностью частоты кварцевого резонатора.
2. Погрешность метода измерения. Поскольку микроконтроллер формирует прерывания синхронно с собственными тактовыми импульсами, возможна потеря одного такта в начале и одного в конце измеряемого периода.
Возможно я чего- то не учёл.
Если у Вас есть такая возможность, рассчитайте реальную погрешность и выложите здесь. А я в свою очередь обязуюсь организовать вывод на ЖК всех гарантированно точных разрядов частоты.

0
* 3 (18.01.2010 11:44) [Материал]
Если я правильно понял, то измерение происходит путем подсчета числа тактов x микроконтроллера за 1/N часть оборота вала (где N - число меток на валу - в данном случае число магнитов).
Тогда получается, что точность тахометра определяется тремя величинами:
1. Погрешностью частоты кварцевого резонатора df/f.
2. Погрешностью метода измерения. Если считать, что возможна потеря двух тактов за период, то погрешность метода измерения равна dx/x=2*N*n/(60*f)*100%, где n - частота вращения вала, f - частота кварцевого резонатора.
3. Погрещностью угла расположения меток на валу друг относительно друга da/a. Получается что для компенсации этой погрешности необходимо подсчет частоты вращения производить по среднему арифметическому нескольких измерений N1.
Вроде так.

0
* 4 eugenemcu (19.01.2010 10:57) [Материал]
Магнит я подразумевал один, в нескольких не вижу необходимости, да и установить их строго на нужных углах просто не реально.
Тут проблема в другом. У меня в тексте программы неверный комментарий, на самом деле таймер T0 тактируется через предделитель /64. А значит, реальная погрешность гораздо больше двух тактов и зависит от остатка в предделителе на момент возникновения прерываний, но не больше 64.
Нужно переделать программу на счёт таймером без деления частоты, но с подсчётом переполнений, тогда погрешность действительно будет составлять несколько тактов МК.
Чуть позже займусь этим.

0
* 5 (19.01.2010 11:46) [Материал]
Я в программировании микроконтроллеров к сожалению ничего не понимаю... Но пробовал моделировать схему в протеусе, так вот при задании частоты входного сигнала например 10 Гц, показания тахометра 300 об/мин. То есть получается как раз два импульса за оборот.
А на счет датчика - то тут вариантов может быть масса... Начиная от автомобильного холла заканчивая бесконтактным оптическим датчиком... Тут уж кто во что горазд и кому что удобнее в каждом конкретном случ

0
* 6 eugenemcu (19.01.2010 12:12) [Материал]
А я в автомобилях не особо... отлаживался под чутким руководством брата. На катушке зажигания ВАЗ2106 два импульса на каждый оборот коленвала. Коэффициент соотношения частот распределительного и коленчатого валов равный двум учтён в прошивке в формуле расчёта частоты.
А вот программа, приведённая по ссылке непосредственно в статье предназначена для измерения частоты один в один, прошивку для неё я не выкладывал. При измерении частоты бытовой розетки показывал 2997-3002 об/мин.

0
* 7 (20.01.2010 22:37) [Материал]
Понятно. У меня тахометр будет использоваться немного для других целей и количество импульсов с датчика за каждый оборот вала по большому счету без разницы.
В принципе точность будет достаточной и в таком виде как сейчас. Поэтому решил собирать схему. Но встал вопрос с прошивкой контроллера. Схему простого программатора я вроде бы нашел - через СОМ-порт. Только непонятно как правильно выставлять фьюзы?

0
* 8 eugenemcu (21.01.2010 08:52) [Материал]
Чтобы избежать неправильной установки фьюзов, лучше использовать софт, в котором режимы работы выбираются из готового списка, а не набираются установкой каждого отдельного бита (например, AvrProg), ну и выбранный программатор соответственно должен поддерживаться этой программой.

При установке же отдельными битами их значения можно подобрать здесь:http://www.engbedded.com/fusecalc/

для режима с внешним кварцевым резонатором , нужно выбрать строки начинающиеся с "Ext Crystal/Resonator High Freq"


0
* 9 (21.01.2010 11:30) [Материал]
AvrProg ради прошивки одного контроллера делать не хочется.
Из самых простых вроде как хвалят UniProf (http://avr.nikolaew.org/progr.htm).
Что необходимо выбрать Ext Crystal/Resonator это я понял, только вот High Freq, Medium Freq или Low Freq? Это как я понимаю соответственно высокая, средняя и низкая частота? К какой частоте относится кварц на 1 МГц? И влияет ли на что-нибудь Start-up time или нет?

0
* 10 eugenemcu (21.01.2010 12:20) [Материал]
Если Вы запрограммируете фьюз CKOPT (поставите галочку, при этом CKOPT=0), то тактовый генератор будет работать на полую амплитуду. При этом диапазон частоты не важен, можно выбирать любой.
Если же фьюз CKOPT не запрограммирован (галочка сброшена, при этом CKOPT=1), генератор работает в режиме пониженного потребления тока, и тогда нужно выбрать частотный диапазон:
low – 0,4...0,9 МГц (только керамический резонатор)
medium – 0,9...3,0 МГц (только керамический резонатор)
high – 3,0...8,0 МГц (кварцевый или керамический резонатор)
Такой режим не рекомендован для работы в условиях с высокими электромагнитными помехами.

Задержка Start-up time предназначен для нормальной раскачки генератора перед запуском программы, не ошибётесь, если возьмёте побольше.


0
* 11 (21.01.2010 17:53) [Материал]
Спасибо. Буду пробовать.

0
* 12 (12.03.2010 16:58) [Материал]
Собрал, прошил. Вроде все соединил правильно. При включении на дисплее горят вместо символов 8 черных прямоугольников справа.
Грешу на индикатор - вместо рекомендованного (не нашел DV16100) купил WH1601A-YYH-CTK. Вот ссылка на даташит на него http://www.platan.ru/pdf/datasheets/winstar/WH-1601A.pdf .
Подскажите пожалуйста, в чем может быть ошибка.
З.Ы. При моделировании в Протеусе с индикатором LM020L все прекрасно работает.

0
* 13 eugenemcu (12.03.2010 20:05) [Материал]
Посмотрел DataSheet - замена нормальная, полный аналог.

8 черных прямоугольников справа - ЖК даже не проинициализировался. Вопрос длинный. Зарегитесь на форуме и создайте тему. Для начала нужно убедиться, что AVR вообще стартует, если да то с какой частотой. Что у Вас есть под рукой – осциллограф или хотя бы светодиод?
К сожалению, всё железо на работе, а впереди выходные, пока могу только набросать тестовую программку со светодиодом для проверки запуска МК.


Статистика

Наш магазин




Какую среду разработки Вы используете?

[ Результаты · Архив опросов ]
Всего ответов: 1528



Им нужна Ваша помощь: