Стрелочные приборы
Сегодня мы поговорим об архаичных, но все еще не вышедших со строя вещах - о стрелках. Точнее - о стрелочных приборах. Казалось бы, в наше время - время современных технологий такой устаревший способ отображения информации, как стрелочные приборы, уходит в прошлое. Но, как ни странно, иногда заменить стрелочного "динозавра" просто нечем. Если во время управления, каким либо транспортом или механизмом необходимо обеспечить быстрое считывание информации - стрелочный прибор незаменим. Для считывания цифровой информации человеческому мозгу требуется значительно больше времени, а иногда чрезмерное отвлечение от основного процесса управления может привести к потери контроля над ситуацией. Поэтому, на приборных досках автомобилей (и не только) "стрелка" будет жить долго, хотя постепенно и вытесняется графическими дисплеями, имитирующими стрелку. Если у Вас возникла необходимость отображать информацию графическим способом, а не цифровым, Вы можете столкнуться с некоторыми проблемами. Современные графические дисплеи могут "слепнуть" на ярком солнечном свете. Линейки светодиодов не решают проблему по той же причине. Остается старая добрая "стрелка". Как же можно реализовать механическую стрелку?
Способ 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
Успехов!
Ой, по-моему, это уже забивание гвоздей микроскопом. Стоимость микроконтроллера и источника питания (не ниже 3 В) становится сравнимой с ценой миллиамперметра. А уж если взять МИКРОамперметр (подороже), то можно и для полевых условий приборы делать. Графические индикаторы уж очень много кушают. НО ! Все равно спасибо! Возиться с прошивкой, все подробно расписывать и сделать опытный образец! - снимаю шляпу. Вдруг настанет такой страшный день, когда у меня кончатся стрелочные приборы, а скрутить будет негде, придется мастерить самому. И я уже знаю, где искать! Спасибо!
Недавні записи
- Text to speech. Українська мова
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
Tags
docker sensors rtc led timer wifi remap sms css websocket mongodb bme280 rfid bluetooth esp8266 nodemcu bkp piezo bmp280 i2c mpu-6050 encoder examples avr brushless ngnix nvic displays bldc java-script pmsm barometer pwm lcd ethernet stm32 raspberry-pi capture usart gpio exti atmega meteo solar smd dma adc eeprom eb-500 flask python ssd1306 uart options flash mpx4115a html gps st-link 3d-printer servo dc-dc foc git books battery hih-4000 watchdog dht11 web tim programmator ssd1331 mpu-9250 usb rs-232 motor max1674 soldering
Архіви