Корректор электронного (стрелочного) спидометра на ARDUINO
- ogurets
- Сообщения: 2041
- Зарегистрирован: 10 янв 2012, 22:42
- Бус: VW T3 SubaruBus AT
- Откуда: Таганрог
Корректор электронного (стрелочного) спидометра на ARDUINO
Артур, можешь сразу добавить ШИМ регулировку скорости вентилятора печки ( на максимален жрет 7ампер) , и если хош могу скинуть скетч или проект для заслонок печки на серво приводах, ещё надо какой-нибудь кран антифриза с ШИМ управлением подобрать и будет вообще хорошо !
ВосЭм - дЭвять 2 осемь 125 осемь 127
- ПРОЖЕКТОР
- Сообщения: 1376
- Зарегистрирован: 28 авг 2014, 12:51
- Бус: T3 84гв 1,9DF+ГБО
- Откуда: Екатеринбург
Корректор электронного (стрелочного) спидометра на ARDUINO
Э-э-э... Погодите!!!
вы мля сейчас так и до авто-рулевого договоритесь...
вы мля сейчас так и до авто-рулевого договоритесь...
________________________________________________________
мой бус: http://fanclub-vw-bus.ru/forum/viewtopic.php?f=102&t=14750
мои работы: http://fanclub-vw-bus.ru/forum/viewtopic.php?f=99&t=14963
мой бус: http://fanclub-vw-bus.ru/forum/viewtopic.php?f=102&t=14750
мои работы: http://fanclub-vw-bus.ru/forum/viewtopic.php?f=99&t=14963
- Артур
- Друг клуба
- Сообщения: 1601
- Зарегистрирован: 12 ноя 2009, 22:38
- Бус: T3 2.8 VR6
- Откуда: Ессентуки
Корректор электронного (стрелочного) спидометра на ARDUINO
Это скорее всего отдельным проектом буду делать. У одной ардуино нет столько пинов.
Сервопривод маломощный и быстрый. Я использую мотор-редукторы печки ВАЗ.
Отправлено спустя 2 часа 22 минуты 40 секунд:
Сервопривод маломощный и быстрый. Я использую мотор-редукторы печки ВАЗ.
Отправлено спустя 2 часа 22 минуты 40 секунд:
Я это сделаю, скетч не нужен, спасибо, я сам. А то не интересно будет.
8(928)376-99-75
- ogurets
- Сообщения: 2041
- Зарегистрирован: 10 янв 2012, 22:42
- Бус: VW T3 SubaruBus AT
- Откуда: Таганрог
Корректор электронного (стрелочного) спидометра на ARDUINO
Эта хрень в принципе может легко потянуь собой блок комфорта, Артур - если чего .... Шуми в личку !
ВосЭм - дЭвять 2 осемь 125 осемь 127
-
- Сообщения: 1
- Зарегистрирован: 13 апр 2020, 16:50
- Бус: FFocus 2
Корректор электронного (стрелочного) спидометра на ARDUINO
Артур, Скетч умеет делать поправки входного сигнала на выходе? Например скачки и помехи кратковременные. Можно было еще вариант с GPS датчиком сделать)
- Артур
- Друг клуба
- Сообщения: 1601
- Зарегистрирован: 12 ноя 2009, 22:38
- Бус: T3 2.8 VR6
- Откуда: Ессентуки
Корректор электронного (стрелочного) спидометра на ARDUINO
Не умеет.
В общем то не сложно это сделать.
Gps датчик это только конструкцию дороже сделает.
Gps нужно только для обучения, к примеру составить карту коэффициентов на скорости от нуля до 180км/ч.
Если и делать такое, то лучше сделать програмку для андроида, чтобы использовать простой смартфон для обучения.
В общем то не сложно это сделать.
Gps датчик это только конструкцию дороже сделает.
Gps нужно только для обучения, к примеру составить карту коэффициентов на скорости от нуля до 180км/ч.
Если и делать такое, то лучше сделать програмку для андроида, чтобы использовать простой смартфон для обучения.
8(928)376-99-75
- vagmax
- Сообщения: 3333
- Зарегистрирован: 11 фев 2014, 20:12
- Бус: vw T3
- Откуда: родина высоких гор и низких приор красавец пятигорск
Корректор электронного (стрелочного) спидометра на ARDUINO
заказал такой девайс работает на 5 https://microchip46.wixsite.com/dxo1/ko ... spidometra
Корректор электронного (стрелочного) спидометра на ARDUINO
Всем привет! Я пытаюсь сделать этот прибор для ваз 2199 панель о вектры. Но у меня что-то не получается.Прошу помощи. Что я сделал в программе не так? Не работают выходы.
//ТАХОМЕТР
volatile unsigned long micros_th1 = 0;
volatile boolean sttaho = false; //триггер тахометра
volatile byte sztaho = 0; //счетчик обнуления
volatile unsigned int sptaho = 0; //кол-во оборотов
//КОРРЕКЦИЯ ТАХОМЕТРА
volatile unsigned int InputTaho = 0;
volatile unsigned int OutputTaho = 0;
double popravkaTaho = 1; //ДЛЯ двигателя 4ц
//СПИДОМЕТР
volatile unsigned long micros_sp = 0;
volatile byte sz = 0; //счетчик обнуления
volatile unsigned int sp = 0; //скорость
volatile boolean st = false; //триггер
//КОРРЕКЦИЯ СПИДОМЕТРА
volatile unsigned int InputSpeed = 0;
volatile unsigned int OutputSpeed = 0;
double popravka = 0;
//ВРЕМЯ РАБОТЫ ОСНОВНОЙ ПРОГРАММЫ (каждые 50 миллисекунд - указано в loop)
unsigned long timing;
//ГЕНЕРАТОР ИМПУЛЬСОВ СПИДОМЕТРА
unsigned long timing2;
unsigned long Period;
unsigned long Skvajnost;
bool Status=0;
//ГЕНЕРАТОР ИМПУЛЬСОВ ТАХОМЕТРА
unsigned long timing3;
unsigned long PeriodTaho;
unsigned long SkvajnostTaho;
bool StatusTaho=0;
//ПИНЫ
int INSPEEDPIN=2;
int INTAHOPIN=3;
int OUTSPEEDPIN=4; //ПИН ВЫХОДА - НА СПИДОМЕТР
int OUTTAHOPIN=7; //ПИН ВЫХОДА - НА ТАХОМЕТР
#define PIN_POT A0 //ПИН СИГНАЛА ОТ ПОТЕНЦИОМЕТРА ПОПРАВКИ
//********************************************************************
void setup(){
Serial.begin(115200); //инициализация ком порта
attachInterrupt(1, speedometr, RISING); //прерывание спидометра по фронту импульса
attachInterrupt(0, tahometr, RISING); //прерывание тахометр по фронту импульса
pinMode(INSPEEDPIN, INPUT);
pinMode(INTAHOPIN, INPUT);
pinMode(PIN_POT, INPUT);
pinMode(OUTSPEEDPIN, OUTPUT);
pinMode(OUTTAHOPIN, OUTPUT);
}
//********************************************************************
void loop()
{
if (millis() - timing > 50)
{
timing = millis();
//Считаем спидометр:
if (sz != 0)
{
sz--;
}
else
{
sp = 0;
}
InputSpeed=sp;
popravka=map(analogRead(PIN_POT),0,1023,0,200)*0.01; //Коэффициент умножения входящего сигнала от 0.00 до 2.00.
OutputSpeed=InputSpeed*popravka; //Вычисление правильной скорости
Period=600000/OutputSpeed; //Вычисление периода импульса
//Считаем тахометр
if (sztaho != 0)
{
sztaho--;
}
else
{
sptaho = 0;
}
InputTaho=sptaho;
OutputTaho=InputTaho*popravkaTaho; //Вычисление правильной скорости
PeriodTaho=600000/OutputTaho; //Вычисление периода импульса
}
//Генерируем импульсы для СПИДОМЕТРА
Skvajnost= Period/2 ; //такая скважность называется меандр
if (Status==0) {
if ( (micros()-timing2)>= Skvajnost) {
timing2 = micros();
digitalWrite(OUTSPEEDPIN, HIGH);
Status=1;
}
}
if (Status==1) {
if ( (micros()-timing2)>= (Period-Skvajnost) ){
timing2 = micros();
digitalWrite(OUTSPEEDPIN, LOW);
Status=0;
}
}
//Генерируем импульсы для ТАХОМЕТРА
SkvajnostTaho=PeriodTaho/2 ;
if (StatusTaho==0) {
if ( (micros()-timing3)>= SkvajnostTaho) {
timing3 = micros();
digitalWrite(OUTTAHOPIN, HIGH);
StatusTaho=1;
}
}
if (StatusTaho==1) {
if ( (micros()-timing3)>= (PeriodTaho-SkvajnostTaho) ){
timing3 = micros();
digitalWrite(OUTTAHOPIN, LOW);
StatusTaho=0;
}
}
}
//********************************************************************
void speedometr(){ //измеряем частоту на входе спидометра по прерыванию
if(!st){micros_sp = micros();}
else {sp = (600000/(micros() - micros_sp));}
st = !st;
sz = 30;
}
void tahometr(){ //измеряем частоту на входе тахометра по прерыванию
if(!sttaho){micros_th1 = micros();}
else {sptaho = (600000/(micros() - micros_th1));}
sttaho = !sttaho;
sztaho = 30;
}
//ТАХОМЕТР
volatile unsigned long micros_th1 = 0;
volatile boolean sttaho = false; //триггер тахометра
volatile byte sztaho = 0; //счетчик обнуления
volatile unsigned int sptaho = 0; //кол-во оборотов
//КОРРЕКЦИЯ ТАХОМЕТРА
volatile unsigned int InputTaho = 0;
volatile unsigned int OutputTaho = 0;
double popravkaTaho = 1; //ДЛЯ двигателя 4ц
//СПИДОМЕТР
volatile unsigned long micros_sp = 0;
volatile byte sz = 0; //счетчик обнуления
volatile unsigned int sp = 0; //скорость
volatile boolean st = false; //триггер
//КОРРЕКЦИЯ СПИДОМЕТРА
volatile unsigned int InputSpeed = 0;
volatile unsigned int OutputSpeed = 0;
double popravka = 0;
//ВРЕМЯ РАБОТЫ ОСНОВНОЙ ПРОГРАММЫ (каждые 50 миллисекунд - указано в loop)
unsigned long timing;
//ГЕНЕРАТОР ИМПУЛЬСОВ СПИДОМЕТРА
unsigned long timing2;
unsigned long Period;
unsigned long Skvajnost;
bool Status=0;
//ГЕНЕРАТОР ИМПУЛЬСОВ ТАХОМЕТРА
unsigned long timing3;
unsigned long PeriodTaho;
unsigned long SkvajnostTaho;
bool StatusTaho=0;
//ПИНЫ
int INSPEEDPIN=2;
int INTAHOPIN=3;
int OUTSPEEDPIN=4; //ПИН ВЫХОДА - НА СПИДОМЕТР
int OUTTAHOPIN=7; //ПИН ВЫХОДА - НА ТАХОМЕТР
#define PIN_POT A0 //ПИН СИГНАЛА ОТ ПОТЕНЦИОМЕТРА ПОПРАВКИ
//********************************************************************
void setup(){
Serial.begin(115200); //инициализация ком порта
attachInterrupt(1, speedometr, RISING); //прерывание спидометра по фронту импульса
attachInterrupt(0, tahometr, RISING); //прерывание тахометр по фронту импульса
pinMode(INSPEEDPIN, INPUT);
pinMode(INTAHOPIN, INPUT);
pinMode(PIN_POT, INPUT);
pinMode(OUTSPEEDPIN, OUTPUT);
pinMode(OUTTAHOPIN, OUTPUT);
}
//********************************************************************
void loop()
{
if (millis() - timing > 50)
{
timing = millis();
//Считаем спидометр:
if (sz != 0)
{
sz--;
}
else
{
sp = 0;
}
InputSpeed=sp;
popravka=map(analogRead(PIN_POT),0,1023,0,200)*0.01; //Коэффициент умножения входящего сигнала от 0.00 до 2.00.
OutputSpeed=InputSpeed*popravka; //Вычисление правильной скорости
Period=600000/OutputSpeed; //Вычисление периода импульса
//Считаем тахометр
if (sztaho != 0)
{
sztaho--;
}
else
{
sptaho = 0;
}
InputTaho=sptaho;
OutputTaho=InputTaho*popravkaTaho; //Вычисление правильной скорости
PeriodTaho=600000/OutputTaho; //Вычисление периода импульса
}
//Генерируем импульсы для СПИДОМЕТРА
Skvajnost= Period/2 ; //такая скважность называется меандр
if (Status==0) {
if ( (micros()-timing2)>= Skvajnost) {
timing2 = micros();
digitalWrite(OUTSPEEDPIN, HIGH);
Status=1;
}
}
if (Status==1) {
if ( (micros()-timing2)>= (Period-Skvajnost) ){
timing2 = micros();
digitalWrite(OUTSPEEDPIN, LOW);
Status=0;
}
}
//Генерируем импульсы для ТАХОМЕТРА
SkvajnostTaho=PeriodTaho/2 ;
if (StatusTaho==0) {
if ( (micros()-timing3)>= SkvajnostTaho) {
timing3 = micros();
digitalWrite(OUTTAHOPIN, HIGH);
StatusTaho=1;
}
}
if (StatusTaho==1) {
if ( (micros()-timing3)>= (PeriodTaho-SkvajnostTaho) ){
timing3 = micros();
digitalWrite(OUTTAHOPIN, LOW);
StatusTaho=0;
}
}
}
//********************************************************************
void speedometr(){ //измеряем частоту на входе спидометра по прерыванию
if(!st){micros_sp = micros();}
else {sp = (600000/(micros() - micros_sp));}
st = !st;
sz = 30;
}
void tahometr(){ //измеряем частоту на входе тахометра по прерыванию
if(!sttaho){micros_th1 = micros();}
else {sptaho = (600000/(micros() - micros_th1));}
sttaho = !sttaho;
sztaho = 30;
}
- Артур
- Друг клуба
- Сообщения: 1601
- Зарегистрирован: 12 ноя 2009, 22:38
- Бус: T3 2.8 VR6
- Откуда: Ессентуки
Корректор электронного (стрелочного) спидометра на ARDUINO
может транзисторы не те поставил?
у меня все работает.
мой скетч нигде не менял?
И ещё, если ВАЗ 21099 на карбюраторе - то тахометр может не работать. А спидометр на ВАЗ 21099 ты какой датчик скорости использовал и где поставил?
у меня все работает.
мой скетч нигде не менял?
И ещё, если ВАЗ 21099 на карбюраторе - то тахометр может не работать. А спидометр на ВАЗ 21099 ты какой датчик скорости использовал и где поставил?
8(928)376-99-75
- ogurets
- Сообщения: 2041
- Зарегистрирован: 10 янв 2012, 22:42
- Бус: VW T3 SubaruBus AT
- Откуда: Таганрог
Корректор электронного (стрелочного) спидометра на ARDUINO
Вот отличная шпаргалка для ардуинки и не только!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ВосЭм - дЭвять 2 осемь 125 осемь 127
Корректор электронного (стрелочного) спидометра на ARDUINO
Забыл сказать что у меня Arduino Nano.
транзисторы bc548. ваз 2199-карбюратор.датчик родной -6 импульсов. в скетче пытался менять входы.я в этом новичок.входа все распаяны как здесь на форуме.
0 pin ардуино - вход от потенциометра регулятора спидометра (у меня применен 5кОм)
2pin ардуино - вход - сигнал тахометра
3pin ардуино - вход - сигнал от датчика скорости
4pin ардуино - выход - на спидометр в приборку
7pin ардуино - выход - на тахометр в приборку
транзисторы bc548. ваз 2199-карбюратор.датчик родной -6 импульсов. в скетче пытался менять входы.я в этом новичок.входа все распаяны как здесь на форуме.
0 pin ардуино - вход от потенциометра регулятора спидометра (у меня применен 5кОм)
2pin ардуино - вход - сигнал тахометра
3pin ардуино - вход - сигнал от датчика скорости
4pin ардуино - выход - на спидометр в приборку
7pin ардуино - выход - на тахометр в приборку
Последний раз редактировалось sany-ya 03 июн 2020, 12:16, всего редактировалось 1 раз.
Корректор электронного (стрелочного) спидометра на ARDUINO
отличная шпаргалка. Спасибо!
Корректор электронного (стрелочного) спидометра на ARDUINO
А реально сделать для мотоцикла индикатор включенной передачи, чтоб брал сигнал от колеса (обороты) и катушки зажигания (или от генератора) и по ним определял какая передача включена?
На более поздних моделях такой датчик (механический) уже штатно устанавливался, на мой не поставить, другое литьё у картера.
А то у меня передачи (3-4-5) очень близко, иногда забываю на какой еду...
старость..
На более поздних моделях такой датчик (механический) уже штатно устанавливался, на мой не поставить, другое литьё у картера.
А то у меня передачи (3-4-5) очень близко, иногда забываю на какой еду...
старость..
Корректор электронного (стрелочного) спидометра на ARDUINO
помогите поправить в скетче пины который выше.правильно я их там указал?
Корректор электронного (стрелочного) спидометра на ARDUINO
Вот как выглядит моя плата. )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- ogurets
- Сообщения: 2041
- Зарегистрирован: 10 янв 2012, 22:42
- Бус: VW T3 SubaruBus AT
- Откуда: Таганрог
Корректор электронного (стрелочного) спидометра на ARDUINO
Зная хотя бы примерное соотношение кпп - можно .
ВосЭм - дЭвять 2 осемь 125 осемь 127
Корректор электронного (стрелочного) спидометра на ARDUINO
Передаточные отношения известны, я пока не придумаю как отфильтровывать промежуточные результаты сравнивания, когда например на сцеплении катишься. Проще наверно всем цифрам что вне диапазонов присваивать результат "нейтраль", дабы не усложнять. Датчик нейтрали тоже кстати можно как-то задействовать во всём этом.
Но это я так, пока зрею и в голове прокручиваю.
Но это я так, пока зрею и в голове прокручиваю.
- Артур
- Друг клуба
- Сообщения: 1601
- Зарегистрирован: 12 ноя 2009, 22:38
- Бус: T3 2.8 VR6
- Откуда: Ессентуки
Корректор электронного (стрелочного) спидометра на ARDUINO
sany-ya, если взял датчик родной, то он кажется индукционный был. Он не будет работать, он формирует не квадратный сигнал, а что-то похожее на синусоиду. Нужно сделать нормальный репер и повесить датчик фаз от восмиклапанника.
8(928)376-99-75
Корректор электронного (стрелочного) спидометра на ARDUINO
Спасибо! Датчик 6 импульсов.брал новый от инжектора.остилограф показал меандр.плата заработала.буду пробовать на машине.а тахометр- да есть сомнения. может попробовать от датчика хола трамблёра.с Arduino столкнулся первый раз по необходимости ) оказалось интересная вещь ).
- ogurets
- Сообщения: 2041
- Зарегистрирован: 10 янв 2012, 22:42
- Бус: VW T3 SubaruBus AT
- Откуда: Таганрог
Корректор электронного (стрелочного) спидометра на ARDUINO
Эта шаурма с правильной обвязкой способна практически на всё необходимое в автомобиле. Уделяйте внимание шумоподавлению и развязачной оптике, также не забываем про затяжку ног в ту или другую сторону.
ВосЭм - дЭвять 2 осемь 125 осемь 127