Вложений: 1
Как сделать спидометр на ардуино( Новичек)
Здравствуйте ребята.
Кто может дословно разжевать как подключить спидометр к ардуино, сейчас для отладки использую вентилятор от пк, на штатной панели он выдает 110км\ч.
На вентиляторе 3 провода, красный,черный,желтый. для подключения использую оптопару 817.
Подключаю так:Вложение 19027
Сколько скетчей перепробовал, нечего не работает.
Подскажите как правильно подключить и может кто-то даст готовый скейч.
Re: Как сделать спидометр на ардуино( Новичек)
можно скетч частотомера использовать http://cyber-place.ru/showthread.php...D0%BE%D1%82%2A
Пересчитать частоту в скорость очень просто, для этого нужно знать цену деления Ваших импульсов
Схема выше не рабочая
Re: Как сделать спидометр на ардуино( Новичек)
Цитата:
Сообщение от
Chip
А можете подсказать как подключить ее что-бы работало?
Re: Как сделать спидометр на ардуино( Новичек)
Какой уровень напряжения импульсов на выходе?
Re: Как сделать спидометр на ардуино( Новичек)
Цитата:
Сообщение от
Chip
Какой уровень напряжения импульсов на выходе?
У вентилятора компьютерного, за один оборот, сигнальный провод 2 раза садится на массу.
Re: Как сделать спидометр на ардуино( Новичек)
Я спрашивал про амплитуду импульса
Re: Как сделать спидометр на ардуино( Новичек)
Цитата:
Сообщение от
Chip
Я спрашивал про амплитуду импульса
12вольт
Вложений: 1
Re: Как сделать спидометр на ардуино( Новичек)
Резистор Rl-10К и Rd-1,5К
Vcc +5в
Re: Как сделать спидометр на ардуино( Новичек)
Цитата:
Сообщение от
Chip
Резистор Rl-10К и Rd-1,5К
Vcc +5в
Здравствуйте, подскажите вы случаем не знаете как именно работает вот этот код?
Код:
unsigned long cur_ms = 0; //переменная для отслеживания натикавших миллисекунд с момента пуска МК
unsigned long prev_ms = 0; //переменная для вычисления отрезков времени
int ms = 0; //сам отрезок времени
int m = 0; //пройденное расстояние
int speed = 0; //переменная для хранения скорости
void setup() {
pinMode(20, INPUT); //включаем 20й порт на Ардуино Мега2560 на чтение
digitalWrite(20, HIGH); //включаем подтягивающий резистор
attachInterrupt(3, odom, RISING); //включаем внешнее прерывание
}
void odom() {
m++; //добавляем 1 при каждом срабатывании
}
void loop() {
cur_ms = millis(); //сколько прошло мс с момента включения
ms = cur_ms - prev_ms; //сколько прошло мс с последнего расчета
if (ms > 500) {
prev_ms = cur_ms; //ставим метку когда было срабатывание
speed = m * 3600 / ms; //вычисляем скорость км в час по кол-ву пройденных метров за отрезок времени ms
m = 0; //обнуляем пройденное расстояние
ms=0; //обнуляем отрезок времени
}
}
Через оптопару подключаю компьютерный вентилятор для проверки, выдает какой-то бред. Если вентилятор подключить к приборной панели показывает 80км\ч.
В этом коде ошибка компиляции в строке "sp=(600000.0/(micros() — micros_sp));"
Код:
//********************************************************************
unsigned long micros_sp;
volatile int sz; //счетчик обнуления
volatile int sp; //скорость
//********************************************************************
void setup(){
Serial.begin(115200); //инициализация ком порта
attachInterrupt(1, speedometr, RISING); //прерывание спидометра по фронту импульса
}
//********************************************************************
void loop(){
Serial.print (sp);
sz = sz — 1;
if (sz == 0){
sp = 0;
}
delay(50);
}
//********************************************************************
void speedometr(){ //измеряем частоту на входе спидометра по прерыванию
sp=(600000.0/(micros() — micros_sp));
micros_sp= micros();
sz = 30;
}
Если вам не сложно разжуйте как это работает, откуда берутся цифры в первом коде "3600" , а во втором "600000.0"
Re: Как сделать спидометр на ардуино( Новичек)
Вы бы для читаемости кода, выложили бы его как положено