учусь рулить хондоэлектроникой. вот так ардуино перебирает скорость на спидометре от 0 до 100кмч с шагом 10кмч с задержкой в пол секунды.
для этого использовал библиотеку TimerOne. штатными средствами ардуино не умеет генерить ШИМ сигнал с заданными параметрами.
если кому надо снять отсечку по скорости то теперь я это смогу сделать без проблем. стоимость аттракциона 700 рублей (цена одной платы ардуино уно)
Arduino
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение Re: Arduino » 05 окт 2014, 23:37
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- hck
- Администратор
- auto:
- Откуда:Tomsk
Сообщение
Re: Arduino » 06 окт 2014, 13:30
Таки ардуино - это лишь компонент, не забывай. Помимо платы и софта, который будет транзитить скорость в мозг и свыше 180 её фиксировать, нужно ещё схему питания от бортсети, защиту от помех, корпус.
[ Civic Ferio Vi-RSK '99 MT ] [ CR-V RVI '00 MT ] [ Civic III Hatchback '86 MT ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 06 окт 2014, 13:34
да, конечно. я это помню и за всем этим к тебе и пете буду обращатья как придет время тулить это в машину. я на пока азы осваиваю и возможноти ардуино.hck писал(а):Таки ардуино - это лишь компонент, не забывай. Помимо платы и софта, который будет транзитить скорость в мозг и свыше 180 её фиксировать, нужно ещё схему питания от бортсети, защиту от помех, корпус.
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- Hondovod
- Президент К-клуба
- Контактная информация:
- auto:Integra Type ZXK
- Откуда:Томск-Колпашево
Сообщение
Re: Arduino » 13 окт 2014, 01:31
Готовая схема питания если что у меня найдется. Библиотеки поправить или добавить, думаю тоже можно, если что особенное понадобится из функционала. А так, конечно такие решения универсальны, изучай, всегда пригодится.
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 27 ноя 2014, 01:12
товарищи знатоки. как подключить ардуино безопасно к автомобильной проводке?
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- hck
- Администратор
- auto:
- Откуда:Tomsk
Сообщение
Re: Arduino » 27 ноя 2014, 12:40
Зарядник от телефона должен подойти, или переходник "прикурка-USB питание", лучше какой нибудь фирмовый качественный, с нормальным шимом. Но скорее всего земля на входе и выходе будет общая, то есть полной развязки не будет.
[ Civic Ferio Vi-RSK '99 MT ] [ CR-V RVI '00 MT ] [ Civic III Hatchback '86 MT ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
- hck
- Администратор
- auto:
- Откуда:Tomsk
Сообщение
Re: Arduino » 27 ноя 2014, 12:41
можно взять с мозга sensor power - тпс или мап. там как раз стабильные 5 вольт.
[ Civic Ferio Vi-RSK '99 MT ] [ CR-V RVI '00 MT ] [ Civic III Hatchback '86 MT ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
[ ICQ: 706076 | Skype: hcktsk | VK: hcktsk ]
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
ардуиноводы знатоки сказали, цепляй в штатное гнездо питания ардуины напрямую, в ней самой есть стабилизатор напряжения.
Re: Arduino » 27 ноя 2014, 22:41
я так подозреваю там 5 вольт относительно sensor ground, да и чорт его знает какой ток оно там сможет, если экранов на ардуину понавешать с подсветками, она может прилично начать жрать ведь.hck писал(а):можно взять с мозга sensor power - тпс или мап. там как раз стабильные 5 вольт.
ардуиноводы знатоки сказали, цепляй в штатное гнездо питания ардуины напрямую, в ней самой есть стабилизатор напряжения.
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 03 дек 2014, 01:55
запилил себе цифровой показометр лямбды на ардуино. ардуино берет сигнал в цифре с контроллера ширика и показывает его на экран. кроме того показывает ещё сопутствующую инфу, состояние ширика, % прогрева зонда, коды ошибок если они есть, калибровку итп. то есть всё то что умеет показывать на ноуте нативный софт от инновейта. девайс работает по последовательному порту, без преобразования сигнала в аналоговый как в родном показометре инновейта. и показывает он лямбду точно, без погрешности, независимо от длины проводов и иных условий. понятно что на родном инновейтовском показометре будет некоторая погрешность показаний, т.к. он аналоговый, а провода имеют конечную проводимость, земля может быть разнесена с контроллером итп.
тестил зонд дуя из зажигалки газом него, так кислород из чувствительной зоны вытеснялся и афр падало. ошибки подогрева выпадают из за того что контроллер запитан хилым китайским блоком питания и на подогрев не хватает тока.
код прошивки далее. буду очень рад если ктото сделает ценные критические замечания, т.к. сам я не программер а геохимик )
тестил зонд дуя из зажигалки газом него, так кислород из чувствительной зоны вытеснялся и афр падало. ошибки подогрева выпадают из за того что контроллер запитан хилым китайским блоком питания и на подогрев не хватает тока.
код прошивки далее. буду очень рад если ктото сделает ценные критические замечания, т.к. сам я не программер а геохимик )
#include <LiquidCrystal.h>
// Инициализируем объект-экран, передаём использованные
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(4, 5, 10, 11, 12, 13);
byte inByte1 = 0; // incoming serial byte1 -- header
byte inByte2 = 0; // incoming serial byte2 -- header
byte inByte3 = 0; // incoming serial byte3 -- word1
byte inByte4 = 0; // incoming serial byte4 -- word1
byte inByte5 = 0; // incoming serial byte5 -- word2
byte inByte6 = 0; // incoming serial byte6 -- word2
byte B = 0; // number of packets
word AF = 0; //stoichiometric AFR value of current fuel setting in the LM-1
unsigned int L = 0; // Lambda value
unsigned int LPrev = 0;
byte F = 0; // Function value
byte FPrev = 0; // Function value
byte NoData = 0;
void setup()
{
Serial.begin(19200);
// устанавливаем размер (количество столбцов и строк) экрана
lcd.begin(20, 4);
lcd.setCursor(0, 1);
lcd.print("Waiting for data");
}
void loop()
{
if (Serial.available() > 6) { //checks if data on serial coonection are available
inByte1 = Serial.read(); //reads first byte of data
if (bitRead(inByte1,7) && bitRead(inByte1,5) && bitRead(inByte1,1) ) { //checks if inByte1 is header of data packet
inByte2 = Serial.read(); //reads second byte of data
if (bitRead(inByte2,7)) { //checks if inByte2 is second byte of header
bitWrite(B, 0, bitRead(inByte2, 0));
bitWrite(B, 1, bitRead(inByte2, 1));
bitWrite(B, 2, bitRead(inByte2, 2));
bitWrite(B, 3, bitRead(inByte2, 3));
bitWrite(B, 4, bitRead(inByte2, 4));
bitWrite(B, 5, bitRead(inByte2, 5));
bitWrite(B, 6, bitRead(inByte2, 6));
bitWrite(B, 7, bitRead(inByte1, 0)); //calculates number of packets from header.
if (B>1) { //checks if packet consists any data except header
inByte3 = Serial.read(); //read afr packet
inByte4 = Serial.read(); //read afr packet
bitWrite(F, 0, bitRead(inByte3, 2));
bitWrite(F, 1, bitRead(inByte3, 3));
bitWrite(F, 2, bitRead(inByte3, 4)); //calculates wb controller status variable
bitWrite(AF, 0, bitRead(inByte4, 0));
bitWrite(AF, 1, bitRead(inByte4, 1));
bitWrite(AF, 2, bitRead(inByte4, 2));
bitWrite(AF, 3, bitRead(inByte4, 3));
bitWrite(AF, 4, bitRead(inByte4, 4));
bitWrite(AF, 5, bitRead(inByte4, 5));
bitWrite(AF, 6, bitRead(inByte4, 6));
bitWrite(AF, 7, bitRead(inByte3, 0)); //calculates afr which is defined as stechoimetric
inByte5 = Serial.read(); //read lambda packet
inByte6 = Serial.read(); //read lambda packet
bitWrite(L, 0, bitRead(inByte6, 0));
bitWrite(L, 1, bitRead(inByte6, 1));
bitWrite(L, 2, bitRead(inByte6, 2));
bitWrite(L, 3, bitRead(inByte6, 3));
bitWrite(L, 4, bitRead(inByte6, 4));
bitWrite(L, 5, bitRead(inByte6, 5));
bitWrite(L, 6, bitRead(inByte6, 6));
bitWrite(L, 7, bitRead(inByte5, 0));
bitWrite(L, 8, bitRead(inByte5, 1));
bitWrite(L, 9, bitRead(inByte5, 2));
bitWrite(L, 10, bitRead(inByte5, 3));
bitWrite(L, 11, bitRead(inByte5, 4));
bitWrite(L, 12, bitRead(inByte5, 5)); //calculates lambda value
if (F!=FPrev) update_F(); //checks if status changed since last iteration and if it so runs screen update for status
if (L!=LPrev) update_L(); //checks if lambda changed since last iteration and if it so runs screen update for lambda
NoData = 0; //clears counter which is needed to determine absence of incoming data
} //if (B>1)
} //if (bitRead(inByte2,7))
} // if (bitRead(inByte1,7) && bitRead(inByte1,5) && bitRead(inByte1,1) )
} //if (Serial.available() > 6)
else NoData++;
if (NoData>15) { //checks if last 15 iterations were not incoming data and display it on screen if it so.
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("No signal");
NoData = 0;
}
Serial.flush(); //clears serial buffer in order to avoid buffer overflow
delay(10);
//new_comment1
} //void loop()
void update_F() //update status on screen
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Status:" );
lcd.setCursor(8,0);
switch (F) {
case 0: //Lambda valid and Aux data valid, normal operation.
lcd.print("OK");
lcd.setCursor(0,1);
lcd.print("AFR:" );
break;
case 1: //Lambda value contains O2 level in 1/10%
lcd.print("Too lean");
lcd.setCursor(0,1);
lcd.print("%O2:" );
break;
case 2: //Free air Calib in progress, Lambda data not valid
lcd.print("Calibration");
// lcd.setCursor(0,3);
// lcd.print(L);
break;
case 3: //Need Free air Calibration Request, Lambda data not valid
lcd.print("Need cali");
break;
case 4: //Warming up, Lambda value is temp in 1/10% of operating temp.
lcd.print("Warmup");
lcd.setCursor(0,1);
lcd.print("Progress:" );
lcd.setCursor(12,1);
lcd.print("%");
break;
case 5: //Heater Calibration, Lambda value contains calibration countdown.
lcd.print("Heater Cali");
break;
case 6: //Error code in Lambda value
lcd.print("Error");
lcd.setCursor(0,1);
lcd.print("Code:" );
break;
case 7: //reserved
break;
} //switch (F)
}
void update_L() //update lambda level on screen
{
switch (F) {
case 0: //Lambda valid and Aux data valid, normal operation.
lcd.setCursor(5,1);
lcd.print((0.5+(L*0.001))*(AF/10));
lcd.setCursor(0,2);
break;
case 1: //Lambda value contains O2 level in 1/10%
lcd.setCursor(5,1);
lcd.print(L/10.0);
break;
case 2: //Free air Calib in progress, Lambda data not valid
break;
case 3: //Need Free air Calibration Request, Lambda data not valid
lcd.setCursor(0,3);
lcd.print(L);
break;
case 4: //Warming up, Lambda value is temp in 1/10% of operating temp.
lcd.setCursor(10,1);
lcd.print(L/10);
break;
case 5: //Heater Calibration, Lambda value contains cal ibration countdown.
lcd.setCursor(0,1);
lcd.print(L);
break;
case 6: //Error code in Lambda value
lcd.setCursor(6,1);
lcd.print(L);
break;
case 7: //reserved
break;
} //switch (F)
}
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- Sash
- Просто великолепная личность
- Контактная информация:
- auto:ITR
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 03 дек 2014, 23:13
ребята, ща буду кое какие шурушки заказывать в http://devicter.ru/" target="_blank
можно скооперироваться чтобы сэкономить на доставке. никому ничо не надо?
можно скооперироваться чтобы сэкономить на доставке. никому ничо не надо?
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 12 дек 2014, 00:17
чтобы не потерять сохраню здесь.
схема подключения тахометра автомобиля к ардуино через оптопару.
слева вход сигнала тахометра, справа выход на оптопару. цифровой фильтр на 4 значения:
int Filter_1[4]={0,0,0,0};
int Index=0;
потом в программе
Filter_1[Index++] = Parameter;
if(Index>3) {Index=0;}
Parameter_filter = (Filter_1[0]+Filter_1[1]+Filter_1[2]+Filter_1[3])>>2;
схема подключения тахометра автомобиля к ардуино через оптопару.
слева вход сигнала тахометра, справа выход на оптопару. цифровой фильтр на 4 значения:
int Filter_1[4]={0,0,0,0};
int Index=0;
потом в программе
Filter_1[Index++] = Parameter;
if(Index>3) {Index=0;}
Parameter_filter = (Filter_1[0]+Filter_1[1]+Filter_1[2]+Filter_1[3])>>2;
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Флудильня)))) » 13 дек 2014, 15:06
кое кто просил схему подключения показометра ширика. выкладываю принципиалную схему и для самых маленьких макетную схему
в редакторе чото у меня не получилось микросхему нужную создать. поэтому поставил на схему первую попавшуюся в DIP16 корпусе. так что на название смотреть не стоит, это микросхема MAX232
в редакторе чото у меня не получилось микросхему нужную создать. поэтому поставил на схему первую попавшуюся в DIP16 корпусе. так что на название смотреть не стоит, это микросхема MAX232
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR
- Hondovod
- Президент К-клуба
- Контактная информация:
- auto:Integra Type ZXK
- Откуда:Томск-Колпашево
Сообщение
lcd.print((0.5+((float)L*0.001))*(AF/10));
или чисто в целочисленном (правильность проверить, и чтоб L*AF за int не выезло)
lcd.print((AF+L*AF/50)/20);
Re: Arduino » 20 янв 2015, 01:34
L У тебя объявлена как unigned int. Нельзя ее умножать на 0.001, так как это целочисленная переменная. Результат должен быть 0.Видимо компилятор ее перевел в float. На целочисленном контролере это много времяресурсов сожрёт. Корректнее такstr писал(а): код прошивки далее. буду очень рад если ктото сделает ценные критические замечания, т.к. сам я не программер а геохимик )
lcd.print((0.5+(L*0.001))*(AF/10));
lcd.print((0.5+((float)L*0.001))*(AF/10));
или чисто в целочисленном (правильность проверить, и чтоб L*AF за int не выезло)
lcd.print((AF+L*AF/50)/20);
- str
- Администратор
- Контактная информация:
- auto:Honda Civic Ferio
- Откуда:Томск
Сообщение
Re: Arduino » 23 янв 2015, 14:05
собрал девайс окончательно на монтажной плате.
слева три клемника это для подключения ширика к девайсу, справа 9 клемников это подключение экрана. потенциометр для регулировки яркости подсветки дисплея. разводку сделал монтажными проводами, паяю ещё не очень аккуратно. штырьковые разьемы вставляются прямо в плату ардуино. т.е. решение таксказать болтон, и его можно воспроизвести даже ваще не шаря. вот так всё в сборе выглядит.
слева три клемника это для подключения ширика к девайсу, справа 9 клемников это подключение экрана. потенциометр для регулировки яркости подсветки дисплея. разводку сделал монтажными проводами, паяю ещё не очень аккуратно. штырьковые разьемы вставляются прямо в плату ардуино. т.е. решение таксказать болтон, и его можно воспроизвести даже ваще не шаря. вот так всё в сборе выглядит.
Mente et manu
Honda Civic `91 1.3 DualCarb Type MR
Honda Civic `91 1.3 DualCarb Type MR