|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 22, 01:03. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Automobilio starterio reles valdymas Arduino Nano
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 4 Pereiti prie 1, 2, 3, 4 Toliau |
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 22, 09:09 |
|
|
|
Sveiki, neesu programuotojas, bandau padaryti starterio reles valdyma automobiliui.
Veikimo principas: Ijungus degima 2sekundes tikrinama P(parking) pavara, stabdziu pedalo daviklis ir variklio sukiai, jeigu variklio sukiai 0-15Hz, ijungiama starterio rele, kai sukiai padideja iki 16.5Hz(variklis dirba tusciaja eiga), sterterio rele isjungiama.
Beda: dirbant varikliui nuspaudus stabdzio pedala po 2 sekundziu starterio rele vel jungiasi, ignoruojami variklio sukiai.
Padekit issprest, aciu
Kodas: |
//Range Rover TDV8 2013 starterio reles valdymas
const int rpmPin = 3;
const int brakePin = 2;
const int ignPin = 5;
const int parkPin = 4;
const int startPin = 12;
const unsigned long maxPulseWidthRunning = 30000ul; // gaunasi apie 15HZ starterio atjungimas
unsigned long LastTimeNotReady = 0;
void setup()
{
// Serial.begin(9600); // Not using any Serial I/O
pinMode(rpmPin, INPUT); //rpm input up to 15HZ(engine running = 18HZ)
pinMode(brakePin, INPUT); //brake switch +
pinMode(parkPin, INPUT); //park/neutral swith +
pinMode(ignPin, INPUT); //15 terminal IGNITION +
digitalWrite(startPin, LOW);
pinMode(startPin, OUTPUT); //Starter relay control
}
void loop()
{
int brakeState = digitalRead(brakePin);
int ignState = digitalRead(ignPin);
int parkState = digitalRead(parkPin);
// If everything is ready for starting
if (ignState == LOW && brakeState == LOW && parkState == LOW)
{
unsigned long pulseWidth = pulseIn(rpmPin, LOW, maxPulseWidthRunning * 2);
// If the engine is not running
if (pulseWidth == 0 || pulseWidth > maxPulseWidthRunning)
{
// Turn on the starter if everything has been ready for at least 2 seconds
if (millis() - LastTimeNotReady >= 2000)
digitalWrite(startPin, HIGH);
}
else
{
// Engine running. Turn off the starter
digitalWrite(startPin, LOW);
LastTimeNotReady = millis();
}
}
else
{
// NOT READY TO START. Make sure the starter is off
digitalWrite(startPin, LOW);
LastTimeNotReady = millis();
}
}
|
|
|
_________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 22, 11:00 |
|
|
|
Ne, ne pasizaidimui, todel ir parasiau cia, palauksiu, kol parasys tie, kas nusimano sketchu rasyme. |
|
_________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 22, 18:38 |
|
|
|
Iš pirmo žvilgsnio klaidų nesimato. Gal funkcija pulseIn() kvailioja esant dideliems sūkiams? Butų gerai pasijungti ekranėlį ir patikrinti ką ji grąžina. Ar bent jau LEDą pajungt su vienokiu ar kitokiu ifu.
Dar variantas: pamėgink pulseIn(rpmPin, LOW, maxPulseWidthRunning * 3); |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 24, 13:59 |
|
|
|
Socrates rašo: |
O nuo kur sukiai paimami? Kazkokio holo daviklio? Visi tie ieinantys signalai kazkaip optiskai atristi? Nes automobily triuksmu buna kruvos. |
Sukiai imami nuo camshaft sensoriaus(holo daviklis), tuscioje eigoje matomas 16.5HZ, 50% lygio, grazus staciakampis, be triuksmu. Visi signalai atristi per optronus. |
|
Paskutinį kartą redagavo keturi, 2022 04 24, 14:08. Redaguota 1 kartą _________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 24, 14:00 |
|
|
|
ElektroXL rašo: |
kokia auto marke bent zinot ? |
Tiesiog pasiziuri sketch pirma eilute ir viskas pasidaro aisku
Galu gale marke sioje situacijoje nevaidina visiskai jokio roles, 80% automobiliu camshaft daznis yra butent toks, o kiti parametrai pajungti per optrona, tai nors ir 1000V ten bus, iejime i Arduino pina bus high arba low. |
|
Paskutinį kartą redagavo keturi, 2022 04 24, 14:12. Redaguota 2 kartus(ų) _________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 24, 14:06 |
|
|
|
Badas rašo: |
Iš pirmo žvilgsnio klaidų nesimato. Gal funkcija pulseIn() kvailioja esant dideliems sūkiams? Butų gerai pasijungti ekranėlį ir patikrinti ką ji grąžina. Ar bent jau LEDą pajungt su vienokiu ar kitokiu ifu.
Dar variantas: pamėgink pulseIn(rpmPin, LOW, maxPulseWidthRunning * 3); |
Butent, kad kvailioja, esant maziems sukiams, testuojant ant stalo(gaila starterio ir smagracio), sujungus P(parking), I(ignition) ir B(brake) ir reguliuojant camshaft sensoriaus imitacija nuo 14HZ iki 18 HZ didziausios nesamones ir vyksta, jei pastatyt generatoriu ant 16,3HZ, tada aplamai starteris pats isijungineja kas 2 sekundes su 1000 delay, nesamone kazkokia.
Jei bus idomu, imesiu live data screenu, neveikia taip, kaip parasiau, reiskia parasiau blogai
P.S. dekoju uz pagalba |
|
_________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 25, 09:00 |
|
|
|
Badas rašo: |
Pakeisk visus pinMode(xxx, INPUT) į pinMode(xxx, INPUT_PULLUP) |
Isbandyta, niekas nesikeicia. |
|
_________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 25, 09:43 |
|
|
|
keturi rašo: |
Badas rašo: |
Pakeisk visus pinMode(xxx, INPUT) į pinMode(xxx, INPUT_PULLUP) |
Isbandyta, niekas nesikeicia. |
Pull Up bet kokiu atveju yra labai rekomenduojama, nes padidina atsparumą įėjimo triukšmams. O dar geriau papildomai išorinės varžas (10Komų) prilituoti tarp įėjimo ir maitinimo.
Paprogramėje loop() nematau delay(), tai dabar ciklas sukasi maksimaliu greičiu ir "velniai žino" į kokius trikdžius reaguoja. Pradžiai reiktų pabandyti pvz. delay(500) įterpti ir pasižiūrėti ar kas nors pasikeis.
O dar geriau atsižvelgti į AlgisL rekomendaciją ir patobulinti algoritmą, įvedant būsenas. Taip bus kur kas paprasčiau programą derinti ir matyti kada koks signalas atsiranda ir kur programa "šokinėja".
Ir įėjimo impulsų trukmes matuoti panaudojant tiesioginį taimerio įėjimą (net nežinau ar Arduino yra tokia galimybė) arba pertraukimus (attachInterrupt()), o ne papgrastą GPIO, kurio apklausimo laikas Arduino aplinkoje yra visiškai neprognozuojamas. |
|
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 25, 09:53 |
|
|
|
Arduino mano zinios apie nuli.
Bet galioja bendri principai.
Jei kazkas neveikia kaip noretusi, tai pasirasai programele, tik problemai, pvz., kad procesintu tuos impulsus ir duotu i isejima LOW HIGH, plius duotu impulso trukme i analogini isejima.
Tada su osicilu pasiziuri kas ten kaip gyvena. |
|
|
|
|
|
|
Automobilio starterio reles valdymas Arduino Nano |
Parašytas: 2022 04 25, 12:14 |
|
|
|
gintaras_bar rašo: |
keturi rašo: |
Badas rašo: |
Pakeisk visus pinMode(xxx, INPUT) į pinMode(xxx, INPUT_PULLUP) |
Isbandyta, niekas nesikeicia. |
Pull Up bet kokiu atveju yra labai rekomenduojama, nes padidina atsparumą įėjimo triukšmams. O dar geriau papildomai išorinės varžas (10Komų) prilituoti tarp įėjimo ir maitinimo.
Paprogramėje loop() nematau delay(), tai dabar ciklas sukasi maksimaliu greičiu ir "velniai žino" į kokius trikdžius reaguoja. Pradžiai reiktų pabandyti pvz. delay(500) įterpti ir pasižiūrėti ar kas nors pasikeis.
O dar geriau atsižvelgti į AlgisL rekomendaciją ir patobulinti algoritmą, įvedant būsenas. Taip bus kur kas paprasčiau programą derinti ir matyti kada koks signalas atsiranda ir kur programa "šokinėja".
Ir įėjimo impulsų trukmes matuoti panaudojant tiesioginį taimerio įėjimą (net nežinau ar Arduino yra tokia galimybė) arba pertraukimus (attachInterrupt()), o ne papgrastą GPIO, kurio apklausimo laikas Arduino aplinkoje yra visiškai neprognozuojamas. |
Realus fizinis pullup techniskai jau buvo padarytas pacioje pradzioje, tik veliau yrasiau sketche
Gera ideja del delay, uzdejau 200 ant stalo panasu, kad gerai, bandysiu masinoje.
Del kitokiu budu skaiciuojamu impulsu gal kas galetu pakeist, pats nemoku.
Kodas: |
//Range Rover TDV8 2013 starterio reles valdymas
const int rpmPin = 3;
const int brakePin = 2;
const int ignPin = 5;
const int parkPin = 4;
const int startPin = 12;
const unsigned long maxPulseWidthRunning = 30000ul; // gaunasi apie 15HZ starterio atjungimas
unsigned long LastTimeNotReady = 0;
void setup()
{
pinMode(rpmPin, INPUT_PULLUP); //rpm input up to 15HZ(engine running = 18HZ)
pinMode(brakePin, INPUT_PULLUP); //brake switch +
pinMode(parkPin, INPUT_PULLUP); //park/neutral swith +
pinMode(ignPin, INPUT_PULLUP); //15 terminal IGNITION +
digitalWrite(startPin, LOW);
pinMode(startPin, OUTPUT); //Starter relay control
}
void loop(){
delay(200);
{
int brakeState = digitalRead(brakePin);
int ignState = digitalRead(ignPin);
int parkState = digitalRead(parkPin);
// If everything is ready for starting
if (ignState == LOW && brakeState == LOW && parkState == LOW)
{
unsigned long pulseWidth = pulseIn(rpmPin, LOW, maxPulseWidthRunning * 2);
// If the engine is not running
if (pulseWidth == 0 || pulseWidth > maxPulseWidthRunning)
{
// Turn on the starter if everything has been ready for at least 2 seconds
if (millis() - LastTimeNotReady >= 2000)
digitalWrite(startPin, HIGH);
}
else
{
// Engine running. Turn off the starter
digitalWrite(startPin, LOW);
LastTimeNotReady = millis();
}
}
else
{
// NOT READY TO START. Make sure the starter is off
digitalWrite(startPin, LOW);
LastTimeNotReady = millis();
}
}
}
|
bandysiu kol kas sita versija |
|
_________________ Kuo daugiau meistru, tuo daugiau darbo:)
CARCHIP Ltd |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|