Установка для проверки/промывки топливных форсунок
- Войдите на сайт для отправки комментариев
Ср, 22/03/2017 - 14:59
В теме по пультоскопу я пооффтопил. В общем переделал скетч генератора сигналов пультоскопа под станцию для проверки инжекторов. Для дисплея OLED Adafruit 128х64. Библиотеки можно взять от пультоскопа.
Вроде работает. Выход на форсы через 9 пин, через мосфет модуль. Выкладываю, так, может кому пригодится.
#include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <PWM.h> #define led 9 //пин для генератора сигналов (не менять) #define levo 10 //кнопка ЛЕВО(можно любой пин) #define ok 11 //кнопка ОК(можно любой пин) #define pravo 12 //кнопка ПРАВО(можно любой пин) #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); int PWM = 128;//стартовое значение ШИМ от 0 до 255 int32_t frequency = 8; //стартовое значение частоты в Гц //########################################################### byte hag=0; int mnog=0; int flag=0; float t = 3.00; long testtime = 30; unsigned long time, timer=0; bool timerenabled=false; void setup() { pinMode (levo, INPUT); digitalWrite (levo, HIGH); pinMode (pravo, INPUT); digitalWrite (pravo, HIGH); pinMode (ok, INPUT); digitalWrite (ok, HIGH); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); InitTimersSafe(); bool success = SetPinFrequencySafe(led, frequency); display.setTextColor(WHITE); delay(500); } void loop() { display.clearDisplay(); if (flag==0){//флаг выборов режима настройки Частоты вращения ДВс if(digitalRead(levo)==LOW){ frequency=frequency-mnog; if(frequency<0){frequency=0;} bool success = SetPinFrequencySafe(led, frequency); delay(3);//защита от дребезга } if(digitalRead(pravo)==LOW){ frequency=frequency+mnog; bool success = SetPinFrequencySafe(led, frequency); delay(3);//защита от дребезга } } if (flag==1){//флаг выборов режима времени впрыска if(digitalRead(levo)==LOW){ t=t-0.1; delay(3);//защита от дребезга } if(digitalRead(pravo)==LOW){ t=t+0.1; delay(3);//защита от дребезга } } if (flag==3) {display.setCursor(80,50);display.setTextSize(2); // меню старт int sec; sec= testtime - ((time - timer)/1000); if (timerenabled){ display.print(sec);} else display.print ("00"); if (!timerenabled){ if(digitalRead(pravo)==LOW){ pwmWrite(led, 255-PWM); timer=time; timerenabled=true;} delay(3);//защита от дребезга } if(digitalRead(levo)==LOW) {pwmWrite(led, 255); timerenabled=false;} } if (flag==2) {if (!timerenabled){ if(digitalRead(levo)==LOW){ testtime=testtime-5; if(testtime<0){testtime=0;} delay(3);//защита от дребезга } if(digitalRead(pravo)==LOW){ testtime=testtime+5; delay(3);//защита от дребезга } } } PWM=frequency*t*0.255; if(PWM<0){PWM=0;} if(PWM>255){PWM=255;} time = millis(); if (timerenabled) { if ((time-timer)>(testtime*1000)) {pwmWrite(led, 255); timerenabled=false;} } if(digitalRead(ok)==LOW){//переключение разряда выбора частоты delay(20);//защита от дребезга hag++; if(hag>=4){hag=0;} } //////////// display.setTextSize(1); display.setCursor(0,0); display.print("PWM="); display.print(PWM*100/255); display.print(" %"); display.setTextSize(2); display.setCursor(54,0); display.print(t); display.setTextSize(1); display.print("msec"); display.setCursor(0,12); display.print(frequency); display.print("Hz"); /////////// display.setCursor(0,29); display.setTextSize(2); long frequencyX=frequency*120; display.print(frequencyX);display.setTextSize(1);display.print("/min"); display.setTextSize(2); display.setCursor(80,26); display.print(testtime); display.setTextSize(1); display.print("sec"); display.setCursor(0,57); display.setTextSize(1); display.print(">> "); if(hag==0){//выбор множителя частоты display.print("--120/min++ "); mnog=1; flag=0; } if(hag==1){//выбор время впрыска display.print("--msec++ "); flag=1; } if(hag==2){//выбор время теста display.print("--TIME TEST++ "); flag=2; } if(hag==3){// меню старт display.print("START "); flag=3; } display.print("<<"); delay(100); display.display(); }
А вся остальная часть?
будет что-то типа этого, на скорую руку. Уже пилю.
В попыхах в первой версии кода забыл сделать режим постоянного открытия форсунок, вот версия 2:
Электронику в отдельную коробушку, все таки топливо )))
ага, а то будет бензуино)
Под дисплеи 3310 или 5110 нужно только библиотеки поменять?
Схему блока мофсет скинь для полного проекта
лучше готовый взять
под другой дисплей думаю не только библиотеки поменять, код надо править.
Вот скетч под дисплей LCD 20х4 с i2c . В скетче можно выбрать логику шим, прямая или обратная. Это важно при подключении к форсункам, в зависимости от того, чем будем рулить - плюсом или минусом. Для мосфет модуля, указанного выше по ссылке, должна быть прямая логика ШИМ.
PS забыл сказать. подключение кнопок, не как в пультоскопе. Я использовал внутреннюю подтяжку к питанию. Поэтому кнопки замыкают "массу".
Подскажите дисплей я правильно подобрал
https://ru.aliexpress.com/item/IIC-I2C-TWI-2004-Serial-Blue-Backlight-LC...
А можете подправить под OLED дисплей, чтоб скетч вошел в nano с Atmega168? А то после компиляции вот это пишет "Скетч использует 12514 байт (87%) памяти устройства. Всего доступно 14336 байт. Глобальные переменные используют 926 байт (90%) динамической памяти, оставляя 98 байт для локальных переменных. Максимум: 1024 байт. Недостаточно памяти, программа может работать нестабильно."
И еще, как шрифт уменьшить,. а то не все данные отображаются на OLED дисплей, интервалы между сстроками сделал минимальными и всеравно не влазит всё?
Со шрифтами так не должно быть, может у вас библиотека кривая. Дак влазит же программа, попробуйте как работает, может и не надо ничего править. У меня вообще на 168 меге не компилируется, 150% занимает оперативы
Подскажите дисплей я правильно подобрал
https://ru.aliexpress.com/item/IIC-I2C-TWI-2004-Serial-Blue-Backlight-LC...
Да
В 328 влазит, а в 168 нет. Библиотеки с сайта пультоскопа вроде брал.
P/S: библиотеки старые удалил, установил новые через оболочку ардуино, все-равно шрифт крупный, все данные не влазят на экран.
под 168 врядли влезет, много слишком не хватает. По поводу шрифта хз, может каким то образом 128 х 32 экран выбирается. Ровно ведь половина не влазит
лучше брать LCD 20х4. Oled конечно четко все, но ппц мелкий он. Да и скетч на 20х4 я уже получше сделал
Есть спаянный пультоскоп на дисплее от нокиа с резисторами на кнопках, можете переделать ваш скетч под него?
А можно подробнее про саму установку? Как нагнетается, что прогоняется?
Да простит меня автор, не смотрел как у него сделана мех часть.
Обычно делается так, берётся насос и какая нибудь рампа от авто (что найдётся подешевле с разборки) тут надо обратить внимание на то что либо насос в сборе с регулятором давления, либо регулятор давления на рампе, ну и дальше всё это куда нибудь крепится кто то варит рамку кто то из дсп выпиливает.
Прогоняется как правило бензин (сам им пользуюсь) но лучше прикупить тест жидкость она цветная лучше видно факел распыла, она не пахнет, она не ГОРИТ. Ибо тут очень аккуратно у многих всё собрано на соплях и одна лишняя искра может привести к печальке.
Спустя год тоже руки дошли до стенда, по необходимости использовал программу TestCarInjector на компе. Немного допилил под свои нужды код MaksVV, сделал управление насосом, сливом жидкости из колб и включение ультразвуковой ванны, но никак не могу понять почему на менюшке Ultrasonic на дисплее начинает моргать inj=4 с частотой 1Гц. И еще никак не дойдет, как сделать по окончанию таймера выход в меню SLIV.
Для начала нужно все сделать без таких делеев (1000)
всем привет! помргите пожалуйста переделать данный скетч под дисплей 1602 ! хотябы где испровлять! ковыряю уже 5й день сил больше нет (((
все места, где есть lcd.тратата. а вообще на 1602 не влазит всё. Что то убирать придётся или по очереди инфу выводить
MaksVV ваш скетч из сообшения №8
то то не вяжется со скетчем у меня
Что то с библиотекой видимо не пойму что уже загружал ругалось что использую две библиотеки
Библиотека LiquidCrystal_I2C не установлена.
Она должна быть в одном экземляре и находиться тут: Мои документы\Arduino\libraries\
Блин мужики подскажите пожалуйста (я маленько дубовый в этом)
Как правильно удалить и загрузить нужную библиотеку
Уже наверное удалить всю программу и заново
В новых версиях Arduino IDE можно сделать так:
1) "Скетч" - "Подключить библиотеку" - "Управлять библиотеками"
2) В появившемся окошке (Менеджер библиотек) справа вверху в строке "Отфильтровать результаты поиска" набрать LiquidCrystal_I2C
3) В отсортированном списке найти строчку LiquidCrystal I2C by Frank de Brabander
3) Нажать на эту строку, а затем на появившуюся справа кнопку "Установка"
Вроде с библиотеками получилось теперь вот это
Вроде разобрался с библиотеками теперь такая беда
а ты как скетч от сюда копируешь?
Блин ну правой кнопкой мыши копировать
Я походу совсем что то не то делаю
MaksVV поделитесь ссылкой на нормальную библиотеку PWM
Скетч нужно копировать без нумерации строк. Наводишь курсор на код, справа вверху кода появляется небольшая панелька с четырьмя кнопками. Вторая слева кнопка копировать. Жмёшь её левой кнопкой мыши. Код скопируется в буфер обмена. Потом встявляешь в IDE как обычно.
Поздравляю Шарик вы балбес
Это про меня в данном случае
Теперь вот это выкидывает Arduino: 1.8.1 (Windows 10), Плата:"Arduino/Genuino Uno"
Вроде нашлась подходящая бибоиотека но как то всё не то на дисплее
Мужики ну подскажите второй день перебираю все возможные библиотеки то программа ругатся то символы на дисплее не пойми как
Нашёл если вдруг у кого качаем отсюда https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Сколько дюймов ваш дисплей OLED, не входит все на мой экран.
Это к кому вопрос а то тут дисплеев уже много
Вчера потестил пока на светодиоде всё нравится, может на днях до рабочего макета доберусь пока на 555 таймере их гоняю
Вот ещё бы добавить режим плавающей частоты
Всем спасибо за скетч и за подсказки :)
Вопрос к MaksVV, у меня такой дисплей https://ru.aliexpress.com/item/Free-Shipping-White-Blue-White-and-Blue-color-0-96-inch-128X64-OLED-Display-Module-For/32717004437.html?spm=2114.13010608.0.0.seue5A , но на него не влазит вся информация почему то. Библиотеки скачивал с разных источников
Я их два дня перебирал
Скиньте схему вашего устройства, интересно посмотреть, что за зверя вы делаете :)
bester, попробуйте другие скетчи, например пультоскопа. если всё будет также, косяк с библиотекой скорее всего. Все библы удаляем, ставим по новой или пробуем на другом компе.
винду переставлял, IDE ставил заново, библы ставил, пультоскоп есть, но работает на нокиевском дисплее, не могли бы вы переделать скетч своего проекта под дисплей от нокии? 5110
Господа. Подскажите пожалуйста, где скачать библиотеку "PWM.h" ?
Господа. Поделитесь пожалуйста библиотекой "PWM.h"
если внимательно читать то библиотеки можно найти от пультоскопа
http://srukami.inf.ua/rar/PULTOSCOPE_LCD5110_final2_DDS_Z.rar
если внимательно читать то библиотеки можно найти от пультоскопа
http://srukami.inf.ua/rar/PULTOSCOPE_LCD5110_final2_DDS_Z.rar
Огромное спасибо. Читал не внимательно!
Просьба к MaksVV откликнуться Есть интересное коммерческое прдложение по теме Писать на somamur@rambler.ru C уважением Сергей
Ребят подскажите дубовому мне, никак не разберусь. В какое место кода вставить такую вот конструкцию? Режим форсаж, во время теста циклично плавно должна нарастать и уменьшаться частота форсунок, допустим от 840 до 6000 оборотов. Куда не вставляю в код, просто не работает.
Ребят подскажите дубовому мне, никак не разберусь. В какое место кода вставить такую вот конструкцию? Режим форсаж, во время теста циклично плавно должна нарастать и уменьшаться частота форсунок, допустим от 840 до 6000 оборотов. Куда не вставляю в код, просто не работает.
Разобрался?
Как то так, если числа с запятой, то frequency объявить как float
Как то так, если числа с запятой, то frequency объявить как float
Объясните пожалуйста что за строка virtuino.vDigitalMemoryWrite(12,sec );
Virtuino это какая-то библиотека?
Я вставил в свою модификацию кода вот так, но IDE написала что virtuino не задекларирован