Přejít na obsah

Modul pro bezpečné nouzové brzdění ESB


Tonic

Doporučené příspěvky

Zdravim vespolek,

neresil nahodou nekdo ESB pro Octavii I? klasicke ESB co se prodava nelze na Octavii I pouzit, jelikoz koliduje s prerusovacem blinkru.

Napadlo me neco takoveho vyrobit za pouziti Arduina a senzoru pretizeni. Nemelo by to byt az tak slozite, nicmene se chci poradit zde.

 

Predem mnohokrate diky za jakoukoli informaci.

Odkaz ke komentáři

Taky jsem nad tím přemýšlel akorát mě všechno trvá dlouho :-) Vzal bych arduino + sensor přetížení namontoval napevno pod volantem protože první co potřebuješ zjistit je jaké přetížení je třeba k aktivaci ESB takže program který bude zatím měřit přetížení v čase. Udělat si pár testů ve vhodném prostředí a pak odladit výstup pro blinkry mám nějaký SW pro tripling který by se dal použít. Výstup z Arduina se pak píchne přes optorelé na výstup komfortu pin bych zjistil je tam jeden na spínání trojuhelníku.

 

Odesláno z mého Lenovo A536 pomocí Tapatalk

Odkaz ke komentáři

Zdar. Já už něco takového vozím asi třetím rokem. Nemám to ale zapojené na blinkry, nýbrž rozblikávám třetí brzdové světlo při agresivnějším brždění.

 

Umístění v levé zadní kapse, napájení přímo z brzdového světla.

 

Je nutné nahrát kód bez bootloaderu. Jen tak je start otázka pár milisekund a ne sekund.

 

O kód se rád podělím. Není to žádný zázrak

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

Zdar. Já už něco takového vozím asi třetím rokem. Nemám to ale zapojené na blinkry, nýbrž rozblikávám třetí brzdové světlo při agresivnějším brždění.

 

Umístění v levé zadní kapse, napájení přímo z brzdového světla.

 

Je nutné nahrát kód bez bootloaderu. Jen tak je start otázka pár milisekund a ne sekund.

 

O kód se rád podělím. Není to žádný zázrak

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Taky jsem nad tím přemýšlel ale jako vypínatelné a druhé světlo schované v okně pro případ buzer kontroly. Jinak ty nepoužíváš IDE a dáváš to tam binárně? Jak detekuješ agresivní brždění?

 

Odesláno z mého Lenovo A536 pomocí Tapatalk

Odkaz ke komentáři

Případná buzer kontrola na nic nepřijde. Ani na technické jsem to nemusel vypínat.

 

Třetí brzdové je zapojené přes rozpínací kontakt relé. To relé ovládám Arduinem. Zažne se rozpínat jedině při deceleraci.

Takže když auto v klidu stojí, nikdo nic nepozná.

 

Použil jsem analogový akcelerometr.

Čtu analogové hodnoty v ose X.

Čili zrychlení a zpomalení.

 

Ukládám se posledních 50 hodnot do ARRAY. Pak spočítám průměr a vyhodnocuji zda bylo více akcelerací, nebo decererací.

 

To filtruje vibrace na výmolech.

 

K mému překvapení ale i tak občas zablikám když vletím do pořádné ďoury.

 

Z toho důvodu to nechci zapojovat na blikání směrovek.

 

Používám několik režimů blikání.

Od 0.3G jen třikrát problikne. Od 0.5G bliká výrazněji a od 0.7G jako ďas.

 

Třetí brzdové světlo mám trošku posílené, takže každého za mnou by mělo trknout že se něco děje.

 

Mám 02. Ta má panické brždění ve výbavě. Ale popravdě mi to ještě nikdy neseplo i když v diagnostice to mám aktivní.

Tak jsem si raději dodělal svoje vlastní které reaguje i na méně dramatické zpomalení.

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

K tomu IDE. Arduino IDE umožňuje upload přes ISP programmer. Koupíš USBtiny za pár dolarů a jedeš.

 

Můžu poslat screenshot, ale když dáš do Google "Arduino program USBtiny ISP" tak většina výsledků bude relevantní.

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

Schéma je prosté.

Koupíš breakout modul akcelerometru na eBayi.

MMA7455 nebo ADXL335

 

Výstup z osy X připojíš na analogový vstup A0 na Arduinu.

Y a Z připojovat nemusíš.

 

Ještě tam mám tlačítko proti zemi na kalibraci.

To tlač mám na D9

Můžu to namalovat ale ne hned.

 

Kontrolní diodu na D13 a bzučák na D10.

 

Z toho D13 pak napájím i vstup tranzistoru který spíná relé.

 

Když relé sepne, jeho rozpínací kontakty se rozpojí a třetí brzdové blikne.

 

V kabině to pípne abych věděl že to funguje.

 

Můžeš to ladit.

Jakýkoli komentář uvítám :)

 

Mám v plánu udělat univerzální desku která by se hodila i na motorku.

Tam je ale 100x více vibrací, čili bude to chtít ladit.

 

 

 

 

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

 

 

 

 

 

 

#include <EEPROM.h>

 

#define BTN 9

#define LED 13

#define BUZZ 10

#define accPinX A0

#define accPinY A1

#define accPinZ A2

 

int accX;

int avgX;

int zeroX;

 

int vizX;

 

#define CNT 100

int arrX[CNT];

 

 

 

void setup()

{

pinMode(LED, OUTPUT); // set LED pin as output

pinMode(BUZZ, OUTPUT); // set buzzer pin as output

pinMode(BTN, INPUT_PULLUP); // set button pin as input

 

Serial.begin(115200);

 

// Reading from address 0 and 1:

 

byte high = EEPROM.read(0);

byte low = EEPROM.read(1);

zeroX = word(high,low);

Serial.print(F("Successfull read from EEPROM. zeroX drift: "));

Serial.println(zeroX,DEC);

Serial.println();

Serial.println();

 

}

 

void loop()

{

if (digitalRead(BTN)==LOW) calibrateX();

 

for (int i=0;i<CNT;i++)

{

checkAccelero();

arrX=accX;

computeAVG();

}

 

avgX-=zeroX;

 

 

vizX = avgX/10;

Serial.print(F("zeroX: "));

Serial.print(zeroX);

Serial.print(F(", vizX: "));

Serial.println(vizX);

 

Serial.print(F("accelero X: "));

Serial.print(analogRead(accPinX));

Serial.print(F(", accelero Y: "));

Serial.println(analogRead(accPinY));

 

//

doTheSwitch();

 

}// end loop

 

void calibrateX()

{

while(digitalRead(BTN)==LOW);

Serial.println();

Serial.println();

blinking(1,500, "Calibration process started..");

Serial.println();

Serial.println();

delay(500);

 

for (int i=0;i<CNT;i++)

{

checkAccelero();

arrX=accX;

computeAVG();

}

zeroX = avgX;

Serial.print(F("Calibrating X axis to ZERO. Drift: "));

Serial.println(zeroX);

Serial.println();

Serial.println();

 

// writing to address 0 and 1:

 

EEPROM.write(0,highByte(zeroX));

EEPROM.write(1,lowByte(zeroX));

 

blinking(3,100, "zeroX value successfully saved to EEPROM memory");

Serial.println();

Serial.println();

Serial.println();

Serial.println();

Serial.println();

Serial.println();

delay(2000);

}

 

void checkAccelero()

{

 

// accX = (analogRead(accPinX));

 

accX = (map(analogRead(accPinX), 156, 487, -100, 100));

 

// Serial.println(accX);

 

 

}

 

void computeAVG()

{

int sumX;

 

for (int j=0;j<CNT;j++)

{

sumX+=arrX[j];

// Serial.print(arrX[j]); Serial.print(", ");

}

avgX=(sumX/CNT);

// return avgX;

 

} // end computeAVG

 

 

void doTheSwitch()

{

switch (vizX)

{

 

case 2:

delay(200); // wait 200mS to jump over 0.3G in case of stronger braking

break;

 

case 3:

blinking(3, 150, "Deceleration 0.3G, blinkink 3x");

break;

 

case 4:

blinking(4, 100, "Deceleration 0.4G, blinkink 4x");

break;

 

case 5:

blinking(5, 50, "Deceleration 0.5G, blinkink 5x");

break;

 

case 6:

blinking(6, 50, "Deceleration 0.6G, blinkink 6x");

break;

 

case 7:

blinking(7, 40, "Deceleration 0.7G, blinkink 7x");

break;

 

case 8:

blinking(8, 30, "Deceleration 0.8G, blinkink 8x");

break;

 

case 9:

blinking(9, 30, "Deceleration 0.9G, blinkink 9x");

break;

 

case 10:

blinking(10, 30, "Deceleration 1G, blinkink 10x");

break;

 

 

}// end switch

 

}// end doTheSwitch

 

void blinking(int rep, int del, String text)

{

Serial.println(text);

for (int i=0; i<rep; i++)

{

digitalWrite(LED, HIGH);

digitalWrite(BUZZ, HIGH);

delay(del);

digitalWrite(LED, LOW);

digitalWrite(BUZZ, LOW);

delay(del);

}

}

 

 

 

 

 

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

To je funkce mapování. Arduino nabízí tuto pohodlnou funkci.

 

Když postavím akcelerometr na záda, tak na něj působí jedna zemská gravitace. To je 1G.

Ale analogový vstup ukazuje hodnotu 156. Tak jsem mu řekl že chci aby těch 156 považoval za -100.

 

Pak jsem akcelerometr postavil na čumák a ukazoval 487.

Přiřadil jsem té hodnotě 100.

 

Takže teď se s hodnotama zrychlení a zpomalení pracuje jednodušeji.

Auto stojící na zadku čumákem do nebe: -100

Auto na čumáku zadkem nahoru: 100.

 

Auto na kolech na rovině: 0

 

Takhle si nastavím aby modul začal blikat při hodnotě 30, což je takové malinko razantnější brždění a Arduino to pro mně přepočítá..

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

Dneska jsem testoval aplikaci G Force moji bežnou jízdu asi 1 km 3 kruháče a díry. Na brzdě bylo 0,38G a nějake drobné přibrždování z dálnice 0,52G. Vidím to že tu citlivost snížím ;-)

 

Odesláno z mého Lenovo A536 pomocí Tapatalk

Odkaz ke komentáři

0.52G není přibržďování :))

To bylo před zavírací dobou pošty ne? :))

Moje nastavení od 0.3 spíná v situacích neočekávaného brždění, nebo když fakt spěchám.

Snažím se jet tak, abych neblikal.

 

Jasně že se to dá nastavit na 0.7

Pak budeš blikat těsně před sepnutím ABS

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

Pohodička naložím věci a lidi projedu ty kruháče a gravitace udělá své na konci otevřu dveře a všechno to vypadá ven :-) No tak vážně V té kapse to máš kvůli vibracím? A nahrávání skeče dělám klasicky přes IDE. Proč USBTiny?

 

Odesláno z mého Lenovo A536 pomocí Tapatalk

Odkaz ke komentáři

V levé kapse to mám protože je tam taková ta polička na audio komponenty.

Nebo by se tomu dalo říct rack.

Nad CD changerem je hromada místa, tak jsem si řekl že je to skvělé místo na pokusy.

 

Teď to chci dát ženě do Fabky a budu muset vymyslet kam to strčit. Odstrojím podběhy a najdu nějaké rovné místo..

 

K tomu nahrávání skeče.

Jsou dva nejpoužívanější způsoby jak naprogramovat Arduino.

 

Přes USB-to Serial adapter

a přes ISP programmer.

 

Obojí děláš přes Arduino IDE.

Pominu že někdo používá AVRdude, nebo třeba Atmel Studio.

 

Ten USB-to-serial využívá bootloader, což je kousek kodu který se v Arduinu po každém startu inicializuje a čuchá jestli ho nechceš náhodou programovat přes UART.

To čuchání trvá minimálně vteřinu, což je pro případ že požaduješ bleskový start a okamžitou akci naprosto nevhodné.

 

Taky jsem to používal než jsem začal s ISP programery. Ale v takovém případě muselo být Arduino neustále pod napětím. I když jsem nešlapal na brzdu.

 

Protože jinak by reagovalo s několikavteřinovým zpožděním, což je zrovna u brzdového světla s křížkem po funuse.

 

 

Těch ISP adaptérů je celá řada. Můžeš k tomu použít i upravené Arduino.

Má to jednu nevýhodu. jakmile smažeš bootloader, získáš rychlý start, ale ztratíš možnost nahrávat přes UART.

Čili dokud ladíš kod, nahrávej přes UART, a až budeš mít finální verzi, nahrej to přes ISP, ať to startuje bez čekání.

 

 

Odkaz ke komentáři

Kdyby to bylo pod napětím po celou dobu chodu vozidla, nebo dokonce nepřetržitě, tak by mělo cenu řešit jaký stabilizátor tam dáš.

 

Pokud to ale budeš napájet jen z brzdového světla, poběží to jen když sešlápneš brzdový pedál.

Ten jednoampérový 7805 je zcela dostačující. Dokonce by stačil i slabší, menší 78L05.

Taky můžeš dát pětivoltový LM1117.

Tyto analogové stabilizátory jsou sice neefektivní a při větším odběru hřejí, ale Arduino skoro nežere a poběží vždy jen chviličku, takže no fear. Budeš mít x-násobnou výkonovou rezervu.

 

Až budeš dělat něco kde se vyplatí vysoká účinnost, koukni po step-down driveru jak radí DAV82. LM2574, LM2596. Jsou to výborné součástky.

Oblíbil jsem si i tyto miniaturní step-down moduly.

http://www.ebay.com/itm/5Pcs-Mini-360-3A-DC-DC-Converter-Step-Down-Module-Adjustable-3V-5V-16V-Power-/221546307596?hash=item339530600c:g:ECYAAOSw0fhXiedh

Jsou za pusu. Používám je do jednoho amperu. Víc bych nezkoušel. Je to fakt droboučké.

 

Každopádně tyto prcky používám k živení Arduina v autě a x-letá spokojenost, spolehlivost.

 

Doporučuji tam dát:

Usměrňovací diodu jako ochranu proti přepólování. (Sériově na plus)

Transil 15V jako ochranu proti napěťovým špičkám (Paralelně k napájení. Každá řídící jednotka v autě je má. Fakt důležitá ochrana)

Polymerovou vratnou pojistku 250mA nebo 500mA (Sériově). Pozor. Jen na jištění Akcelerometru a Arduina. Relé tím nejisti, páč nevíme kolik žere třetí brzdové světlo. Na Oktávce II to bylo tuším 260mA, ale kdo ví jaké světlo má třeba O1, nebo jiné auto.

 

Možná i polymerovou vratnou pojistku na to brzdové světlo (Sériově). 1A? to je 12W. To třetí brzdové určitě žere méně.

 

 

 

 

 

 

Odkaz ke komentáři

Pokud se to všechno bude napájet z brzdového světla, jako nejbezpečnější řešení pro napájení akcelerometru a arduina považuji paralelní stabilizátor se zenerkou (3V3 ) nebo lépe s řízenou zenerkou TL431.

 

Dotaz - ví prosím někdo, jaké napěťové úrovně ADXL355 lezou z výstupů X,Y,Z např. při změně zrychlení z nuly na 10G?

EDIT

Už jsem to našel-( kdo by se o to blíže zajímal)

Pro napájecí napětí 3V jsou výstupy při 0G všechny na úrovni 1,5V a citlivost je 300mV/G a umí to měřit max do 3,6G do+ i do -.

Pro jiné napájecí napětí se citlivost mění!!! (U=3,6V je 360mV/G, pro U=2V je 195mV).

(asi se časem pokusím něco podobného vymyslet bez arduina)

Odkaz ke komentáři

Ano, to je ideální Transil. Cpu ho všude kde chci ochránit součástky. Bacha na polaritu. V opačném směru je to dioda.

 

Za šest pade výborná ochrana.

Před napěťovýma špičkama.

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

BTW teď jsem byl v GME a polymerové vratné pojistky měli po jednom kuse. Buď to lidi málo kupujou, nebo už se orientují na SMD

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

UPDATE

 

Ten ADXL335 na který odkazuješ má svůj vlastní zdroj 3.3V To je moc fajn.

při deceleraci -1G je na výstupu X: 1.3V

V rovině X: 1.6V

Akcerace 1G X: 1.9V

 

Včera jsem ladil jeden prototyp a zjistil jsem že akcelerometr se nechá snadno zarušit šumem ze spínaného zdroje.

Nemám po ruce osciloskop, takže nevím jak moc ten zdroj šumí.

V mém případě volím analogový stabilizátor a je posekáno :)

Krásně čistý výstup.

 

Odkaz ke komentáři

Lukony k čemu slouží přesně kalibrace?

Objednával jsem ještě:
http://www.ebay.com/itm/401237960337?_trksid=p2057872.m2749.l2649&var=670832094484&ssPageName=STRK%3AMEBIDX%3AIT pro spínání brzdového světla jsem objednal Optocupler místo tranzistoru

http://www.ebay.com/itm/221546307596?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Takže spínaný stabilizátor LM2596 a tento typ MP2307DN nelze použít kvůli rušení akcelerátoru?

Co kdybych dal celé zařízení do pěnovky a upevnil abych omezil alespoň vibrace od konstrukce?

Odkaz ke komentáři

Já si ten miniaturní spínaný zdroj hodně oblíbil.

Dával jsem ho kam se dalo.

Ale možná mají kolísavou kvalitu výrobků.

Ten poslední kus mně vyléčil.

Akcelerometr fakt blbnul a i to piezo chrčelo. Kdo ví co z toho zdroje lezlo.

 

Po změně na analogový LM1117 naprosté bezvětří a klid.

 

 

Ten relé modul jsem taky objednával.

Nikdy jsem ho nepoužil.

Relé z GMElectronic je o půlku menší.

 

S tím optocouplerem to má navíc obrácenou logiku a spíná to při nule.

To už nevím jistě.

Nepoužil jsem to fakt nikde.

 

Moje spínání relé je možná trošku předimenzované, ale jistota je kulomet.

 

Přes R220 ohm spínám NPN Darlington.

Třeba BD677.

Ten teprve napájí 5V relé.

 

Na trhu jsou i čipy přímo dělané na spínání autožárovek.

Mají Mosfety s minimálním odporem.

 

Ale chtěl jsem opravdu metalický rozpínací kontakt

Kdyby to Arduino třeba úplně umřelo, tak ať se třetí brzdové chová jako by nic.

Jakoby ten drát z fabriky nikdo nepřerušil :)

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

 

 

 

Jo a kalibrace je nepovinná.

Kalibrací jen ukládáš aktuální náklon čidla jako absolutní rovinu.

 

Je to pro případ že bys musel accelero namontovat nakřivo a chtěl tu nerovnost vyrovnat.

 

Pěnovku zkus.

Můj akcelerometr jede celkem spolehlivě i bez ní, ale je fakt že na brutálních kočičích hlavách si občas pípne když sešlápnu brzdu.. :)

 

Odesláno z mého Lenovo Z90a40 pomocí Tapatalk

Odkaz ke komentáři

Lukony: ty čínský relé jsou vetší to jo :) Mám je pro spínání, vypínání DRL a fungují a dávají je do všech přípravků co prodávají, jinak co za typ používáš ty? protože mám lištu kde z 8 - 2 nefungují. Holt QC se u Číňanů moc nenosí :)

Dál nepochopil jsem ty poznámky ohledně relé...

Breta: co já vím tak mám relé univerzální AC/DC spínané 12V a spínané 5V plus pro jistotu optocouplerem pro Arduino. Lukony: vybíráš si přece Pin na který to zapojíš Není energie zapojen, Je energie odpojen....

Ohledně Diody proti přepolování na kostru, je nějaký konrétní důvod jí dávat na plus? Viděl jsem že to tak dělají ale já ji raději dávám na mínus....
Lukony: u Zapojení Transilu si trošku ujel ;-). Zapojuje se mezi póly a orientace je nepodstatná, použití v autě asi kvůli ESD...

Odkaz ke komentáři

Zapoj se do diskuse

Přidej příspěvek nyní a registruj se později. Pokud máš účet, přihlaš se zde.

Návštěvník
Odpovědět na toto téma...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Pro přidání fotek je třeba se přihlásit
  • Kdo si právě prohlíží tuto stránku   0 registrovaných uživatelů

    • Žádný registrovaný uživatel si neprohlíží tuto stránku
×
×
  • Vytvořit...