Сборка

28-004 (x)

ИНТЕРНЕТ-РЕСУРС
окрашен синтетической эмалью

Цвет эмали

Онлайн

0 участник(а/ов)

Белорусский Клуб
автолюбителей «Москвич - ретро»

Рег №004 - 2024



Форум


Стиль: МЗМА, ТКМ
Сообщений/обсуждений на странице:

Форум » Разное » Флейм » Arduino в Москвич

Arduino в Москвич
Abarigen 17 марта 2020, 17:43:08

Arduino в Москвич

Торкнуло меня сделать один девайся для Москвича. Что куда и зачем это отдельная история. Суть в том что для реализации идеи пришлось осваивать микроконтроллеры Arduino. В частности выбор пал на Arduino UNO.

Да, это не оригинал, зато дешевле в разы и для пробы сойдет. Ну а чтобы видеть то ли там микроконтроллер этот считает, что я думаю взял еще и плату расширения с LCD экраном и кнопками (LCD Keypad 16х2).

И вот в ходе изучения и экспериментов решил на этой базе сделать пока помощник штурмана.
Если кто не в курсе, то были в советское время у раллистов приборы Halda SpeedPilot

и Halda TwinMaster

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

Ставится "в разрыв" троса спидометра. Выдает 6 импульсов за 1 оборот.
Как известно привод спидометра на Москвиче (а также на ГАЗ и ЗАЗ) имеет американский (мили) стандарт, т.е. делает 624 оборота за 1 км пути. Следовательно за 1 км пути в идеальных условиях прибор должен насчитать 6*624=3744 импульсов.
 
Минимально прибор должен считать:
1. Время от старта [ЧЧ:ММ:СС]
2. Расстояние от старта [км]
3. Средняя скорость [км/ч]
 
В идеале:
4. Время текущее [ЧЧ:ММ:СС]
5. Расстояние с момента предыдущего сброса [км]
6. Время, за которое пройден участок с момента предыдущего сброса [ЧЧ:ММ:СС]
7. Средняя скорость на сброшенном участке
 
Дальше пойдет описание алгоритма.
 
Код программы (на жаргоне ардуинщиков это называется скетч) пишется на C++. Я с этим языком не очень знаком, но кое что из Pascal помню, поэтому в общих чертах понятно что куда, а что не понятно, то легко гуглится.
Синтаксис C++ специфический, поэтому чтобы не запутаться короткие формы записи я стараюсь не использовать.
 
Чтобы не изобретать велосипед погуглил готовые примеры локальных скетчей.
 
В большинстве примеров используется функция delay(). Это встроенная функция, которая делает задержку в работе микроконтроллера на указанное количество миллисекунд (для информации 1 секунда это 1000 миллисекунд). Для примеров когда нужно помогать лампочкой это подходит, но для чего-то более серьезного ее использовать не стоит. Вместо нее правильнее использовать millis(). Это тоже встроенная функция, которая при вызове сообщает сколько прошло миллисекунд с момента запуска микроконтроллера. Максимальное количество миллисекунд 4294967295 (2 в 32-й степени минус 1) и наступит оно через 4294967295/(1000*60*60*24)=49,7 дней.
Для моих нужд это не критично, но чтобы не было форс-мажоров при переходе счетчика на новый круг нужно пользоваться этой функцией через сравнение разницы текущего и предыдущего значений с требуемым.


  lastTime = millis();
  while(millis()-lastTime > 1000) {
 
  }
Естественно переменную lastTime нужно относить к типу uint32_t (Целое число без знака длиной 32 бит).
 
Для работы с часами использовал следующий готовый алгоритм:

uint8_t hours = 0;       // Целое число без знака длиной 8 бит (от 0 до 255)
uint8_t minutes = 0;    
uint8_t seconds = 0;    
uint32_t lastTime = 0;   // Целое число без знака длиной 32 бит (от 0 до 4294967295)
 
void setup() {
}
 
void loop() {
  while(millis()-lastTime > 1000) {
    lastTime = millis();
    seconds = seconds +1;
    if (seconds >= 60) {
       seconds = 0;
       minutes = minutes +1;
    }
    if (minutes >= 60) {
       minutes = 0;
       hours = hours +1;
    }
    if (hours >= 24) {
       hours = 0;
    }
    /* Тут должен быть вызов функции вывода времени на экран в нужной форме*/
  }
}

 
Для подсчета импульсов использовал прерывания.
 
Чтобы не крутить датчик дрелью решил имитировать сигнал с помощью второй платы.


Прикрепленный файл (Размер: 102 КБайт)


______________________________________
Купил Москвич и не жалею... Никого...
Мастерская 
Вся дискуссия в этом обсуждении:

Форум » Разное » Флейм » Arduino в Москвич