Стрелочные приборы


11.03.2014

Сегодня мы поговорим об архаичных, но все еще не вышедших со строя вещах - о стрелках. Точнее - о стрелочных приборах. Казалось бы, в наше время - время современных технологий такой устаревший способ отображения информации, как стрелочные приборы, уходит в прошлое. Но, как ни странно, иногда заменить стрелочного "динозавра" просто нечем. Если во время управления, каким либо транспортом или механизмом необходимо обеспечить быстрое считывание информации - стрелочный прибор незаменим. Для считывания цифровой информации человеческому мозгу требуется значительно больше времени, а иногда чрезмерное отвлечение от основного процесса управления может привести к потери контроля над ситуацией. Поэтому, на приборных досках автомобилей (и не только) "стрелка" будет жить долго, хотя постепенно и вытесняется графическими дисплеями, имитирующими стрелку. Если у Вас возникла необходимость отображать информацию графическим способом, а не цифровым, Вы можете столкнуться с некоторыми проблемами. Современные графические дисплеи могут "слепнуть" на ярком солнечном свете. Линейки светодиодов не решают проблему по той же причине. Остается старая добрая "стрелка". Как же можно реализовать механическую стрелку?

Способ 1

Стрелочные приборы Стрелочные приборы

Взять стрелочный вольтметр и подавать на прибор напряжение, управляя стрелкой. Можно так же использовать более надежные и виброустойчивые приборы со старых или сломанных автомобильных приборных панелей. Подойдут указатели уровня топлива и температуры. Но если Вам нужно вывести информацию из микроконтроллера, возникает проблема: нужно формировать напряжение, пропорциональное положению стрелки. Строить для этой цели ЦАП не совсем разумная затея. Кроме того, угол отклонения стрелки этих приборов, как правило, не более 90 градусов. Этого не всегда достаточно.

Способ 2

Стрелочные приборы

Автомобильный тахометр. В некоторых автомобилях используются тахометры, работающие с магнитными датчиками. Их стрелка отклоняется в зависимости от частоты срабатывания этого датчика. Т.е. Нам достаточно подать питание (+12В) и замыкать управляющих вход с нужной нам частотой, управляя стрелкой. Что гораздо проще сделать с помощью микроконтроллера и лишает нас необходимости строить схему с ЦАП. Я пользовался такими тахометрами. У них есть приятная особенность - демпфирование стрелки. Т.е. при самых резких перепадах управляющего сигнала стрелка не дребезжала и вела себя на 100% адекватно. Угол  отклонения стрелки самый шикарных из всех приборов и гарантирует отличную информативность и легкость считывания. Однако, автомобильный тахометр требует питания 12В. И они немного громоздкие. На фото (извините за качество) именно такой автомобильный тахометр. Он имеет 3 вывода: "+" питания, общий и управляющий вывод. Кстати, на фото видно, что прибор имеет цифровое табло и линейку из светодиодов. Также имеется звуковая сигнализация, но в данном случае удобство стрелочного прибора затмило все способы отображения информации.

Способ 3

Сервомашика

Если нет возможности питать схему напряжением 12В. Можно воспользоваться сервомашинкой, прикрепить к валу стрелку, и проблема решена. Сервомашика гораздо меньших размеров, питается напряжением 5В, ее без проблем можно купить. Но, обычно сервомашинки могут отклоняться на 30,45,60 градусов. Можно расширить угол поворота некоторых машинок до 180 градусов. Во время поворота сервомашики издают специфический звук, что не всегда приемлемо.

Способ 4

Стрелочные приборы Стрелочные приборы

Увы, но опять возвращаемся к автомобильным приборам. Почему? Потому что они рассчитаны на вибрации и оказались самыми неубиваемыми. Описанные в Способе 2 тахометры стали все реже встречаться. Их место занимают более продвинутые механизмы и современная электроника.

А именно: вот такие 4-х полюсные шаговые микродвигатели. Именно они стали самыми "удачными стрелочниками". Габариты самые маленькие. Работают даже от 3В. Угол поворота стрелки около 330 градусов. Потребление электроэнергии только в момент поворота вала. Легко монтируются на печатную плату.

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

Мне встречалось несколько типов таких машинок. У разных видов количество шагов на полный поворот стрелки разный. Например, у белых - 180 шагов, у черных почти в 2 раза больше. Определять нужно экспериментально.

В качестве примера я взял отладочную плату и подключил шаговый микродвигатель к ногам микроконтроллера. Схема.

Получилось, по-моему, неплохо:

Управляет этим всем вот такая программа:


#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
#include <util/delay.h>

#include "arrow.h"

int main(void) {

	uint8_t value=0;
	arrow_init(); // Инициализация с прогоном и установкой стрелки в начальное положение

	//arrowSetPos(ARROW_STEPS/2); // Установить стрелку в среднее положение (если требуется)

	PORTB |= (1<<PINB1 | 1<<PINB2);
	while(1) {
/*		// Управление кнопками с помощью функций arrowUP, arrowDN
		if ((PINB & (1<<PINB1)) == 0) {
			arrowUP(1);
		}
		if ((PINB & (1<<PINB2)) == 0) {
			arrowDN(1);
		}
*/
		// Управление кнопками с помощью функции arrowSetPos
		if ((PINB & (1<<PINB1)) == 0) {
			if (value < ARROW_STEPS)
				value++;
		}
		if ((PINB & (1<<PINB2)) == 0) {
			if (value > 0)
				value--;
		}
		arrowSetPos(value);

	}

}

В файле arrow.h можно установить необходимые параметры:



#ifndef ARROW_H_
#define ARROW_H_

#include <stdio.h>
#include <avr/io.h>

#define ARROW_DDR    DDRC
#define ARROW_PORT    PORTC

#define ARROW_PIN1    PINC0
#define ARROW_PIN2    PINC1
#define ARROW_PIN3    PINC2
#define ARROW_PIN4    PINC3

#define ARROW_DELAY    10
#define ARROW_STEPS    180

void arrow_init();
void arrowUP(uint8_t steps);
void arrowDN(uint8_t steps);
void arrowSetPos(uint8_t pos);

uint8_t step0OUT[4];
uint8_t step1OUT[4];
uint8_t arrowStep;
uint8_t arrowPos;

#endif

Максимальное количество шагов на полный поворот стрелки:


#define ARROW_STEPS    180

Задержка между шагами. Чем меньше - тем быстрее поворот. Слишком малая задержка может вызвать заклинивание и дребезг стрелки:


#define ARROW_DELAY    10

Порт и выводы портов:


#define ARROW_DDR    DDRC
#define ARROW_PORT    PORTC

#define ARROW_PIN1    PINC0
#define ARROW_PIN2    PINC1
#define ARROW_PIN3    PINC2
#define ARROW_PIN4    PINC3

Скачать пример для AVR

Успехов!

Корисно знати Схеми і прошивки
Коментарі:
Кожаный Шланг говорить:
04.05.2014 12:43
Ой, по-моему, это уже забивание гвоздей микроскопом. Стоимость микроконтроллера и источника питания (не ниже 3 В) становится сравнимой с ценой миллиамперметра. А уж если взять МИКРОамперметр (подороже), то можно и для полевых условий приборы делать.  Графические индикаторы уж очень много кушают. 
НО ! Все равно спасибо! Возиться с прошивкой, все подробно расписывать и сделать опытный образец! - снимаю шляпу. 
 Вдруг настанет такой страшный день, когда у меня кончатся стрелочные приборы, а скрутить будет негде, придется мастерить самому. И я уже знаю, где искать! Спасибо!

Додати коментар
Code
* - обов'язкові поля

Архіви