Modul parkovacich senzorov / univerzalny "auto" modul
Moderátori: psichac, Moderátori
Modul parkovacich senzorov / univerzalny "auto" modul
Cele to zacalo tak, ze som si chcel do auta domontovat parkovacie sezory, no mam zle skusenosti s cinskymi sadami a tak som sa na bazosi dostal som sa k original (VW) parkovacim ultrazvukovym senzorom za par eur. Vdaka zawinovemu clanku ako senzory komunikuju, som sa rozhodol postavit modul, kde budu senzory pripojene, budu obsahovat pipac a po zapnuti cuvacieho svetla modul dostane napajanie....
Po rychlom teste a skuske senzorov na vyvojovej doske, som sa rozhodol pre "esteticku" konstrukciu miesto akehosi spletenca vyvojovej DPS+bizuterie v aute.
Zacal som od krabicky. Z jedneho projektu mi ostalo par krabiciek zo switchu, ktora je kompaktnych rozmerov a ma na sebe male vetracie dierky, cez ktore dobre pojde zvuk z pipaku (reproduktoru). Rozhodol som sa teda pouzit tuto krabicku. Navyse mala aj oznacenie 1-5 (povodne porty) a 6x svetlovod na LED diodu, tiez s oznacenim.
Pri kresleni schemy som si povedal, ze ak pridam este par sucistok vznikne mi z toho celkom roznorode vyuzitelny modul.
Skoncilo to tym, ze mam v podstate univerzalny "auto" modul s klucovymi vlasnostami:
-modul ma 4x 12V vstupo/vystup (otvoreny kolektor) na pripojenie 12V signalov (napr meranie zapnutych svetiel), pripadne spinanie napr. rele (ochrana dioda je uz v module), LED...
-kazdy vstupo/vystup je pripojeny na vystup MCU, ktory vie pracovat v PWM mode
-kazdy vstupo/vystup je pripojeny na vstup MCU, ktory vie byt aj AD prevodnik
-na boku krabice je diera povodne na napajaci konektor a na DPS je miesto na osadenie 3pin uhloveho konektora do dvoch moznych hlbok a ziskat tak konektivitu UART alebo I2C (pull-up rezistory su v module). Napr na pre debug kabel, prepojenie s inymi modulmi..
-cez delic je napajacie napatie pripojene na AD prevodnik MCU, takze je mozne monitorovat napajacie (palubne) napatie a urobit si tak napr "odpojovac" niecoho pri nizkom napatie, resp modul denneho svietenia a pod..
-obsahuje bzuciak, ktory moze byt 5V, ale i 12V (nastavitelne zmenou polohy rezistora - prepojky).
-na miesto bzuciaku moze byt dokablovane i rele, resp reproduktor, kedze je zapojeny na PWM pin
-vo vnutri modulu je ISP konektor, ktory pri odpusteni si bzuciaku moze sluzit aj ako SPI port (SS sa da zobrat napr z LED5, v SPI slave mode by sa uz musel obetovat i port1)
-modul obsahuje DCDC menic na napajanie MCU s dostatocnou rezervou na napajanie pripadnych periferii.
-modul obsahuje polyswitch a transil ako vratnu ochranu pri pripadnom prepati/pretazni/prepolovani (napr skrate na vodicoch do senzorov)
Chcem len podotknut, ze pri inom ako planovanom pouziti, sa moze stat, ze niektore komponenty treba zamenit za ine, resp. ich vynechat. Schema ktoru prikladam teda neobsahuje jedine mozne hodnoty suciastok.
Co sa programu tyka, pouzivam moj program ktory nema nic spolocne so zawinovym prikladom, vsak nechcem ho zverejnovat, nakolko som v programovani zaciatocnik.
Ak by niekto mal o stavbu zaujem ostalo mi par DPS a tiez mam i par krabiciek.
0
Merať znamená vedieť.
Re: Modul parkovacich senzorov / univerzalny "auto" modul
Veľmi pekne.
Slušne zapájkované. Páči sa mi, že si začal od krabičky a tým pádom je to pekný finálny výrobok.
Daj sem aj program, nehanbi sa. Čo na tom, že si začiatočník. Trochu kritiky snáď znesieš od rýpalov, a možno ti to pomôže z jeho vylepšením.
Za mňa +1.
Slušne zapájkované. Páči sa mi, že si začal od krabičky a tým pádom je to pekný finálny výrobok.
Daj sem aj program, nehanbi sa. Čo na tom, že si začiatočník. Trochu kritiky snáď znesieš od rýpalov, a možno ti to pomôže z jeho vylepšením.
Za mňa +1.
0
Re: Modul parkovacich senzorov / univerzalny "auto" modul
dik, za +, cakal som skor obvyklu miestnu kritiku..
Vacsina bizuterie je 0603, takze sa to da pajkovat normalou pajkou v pohode. Nie je to sice idealne ako reflow i ked raz by som si rad urobil piecku s ktorou by to malo byt o poznanie lepsie.
Sice nerad, ale pripajam teda aj kod (resp z neho) i ked by si z neho nikto nemal brat priklad, nakolko je to v podstate prvy funkcny pokus a nie je to zrovna ucesane. Navyse to funguje tak, ze sa urobia 4 merania, zisti sa ktore je najmensie a podla toho sa udeje spravne pipnutie (delayom). Tzn ked sa pipa, tak sa nemeria. Ale kedze sa cuva pomaly a beep nie je velmi dlhy, tak to neprekaza.
Main vyzera takto:
a meranie vyzera takto:
Vacsina bizuterie je 0603, takze sa to da pajkovat normalou pajkou v pohode. Nie je to sice idealne ako reflow i ked raz by som si rad urobil piecku s ktorou by to malo byt o poznanie lepsie.
Sice nerad, ale pripajam teda aj kod (resp z neho) i ked by si z neho nikto nemal brat priklad, nakolko je to v podstate prvy funkcny pokus a nie je to zrovna ucesane. Navyse to funguje tak, ze sa urobia 4 merania, zisti sa ktore je najmensie a podla toho sa udeje spravne pipnutie (delayom). Tzn ked sa pipa, tak sa nemeria. Ale kedze sa cuva pomaly a beep nie je velmi dlhy, tak to neprekaza.
Main vyzera takto:
Kód: Vybrať všetko
int main(void)
{
HWinit();
while (1)
{
Led5On();
uint8_t distancePDC1 = MeasurePDC1();
_delay_ms(SILENT_TIME);
uint8_t distancePDC2 = MeasurePDC2();
_delay_ms(SILENT_TIME);
Led5Off();
uint8_t distancePDC3 = MeasurePDC3();
_delay_ms(SILENT_TIME);
uint8_t distancePDC4 = MeasurePDC4();
_delay_ms(SILENT_TIME);
uint8_t distanceMIN = 255;
uint8_t distanceMINat = 0;
if (distancePDC1<distanceMIN) {distanceMIN = distancePDC1; distanceMINat = 1;}
if (distancePDC2<distanceMIN) {distanceMIN = distancePDC2; distanceMINat = 2;}
if (distancePDC3<distanceMIN) {distanceMIN = distancePDC3; distanceMINat = 3;}
if (distancePDC4<distanceMIN) {distanceMIN = distancePDC4; distanceMINat = 4;}
if (distanceMIN<255)
{
if (distanceMINat == 1) {Led1On(); Led2Off(); Led3Off(); Led4Off();}
if (distanceMINat == 2) {Led1Off(); Led2On(); Led3Off(); Led4Off();}
if (distanceMINat == 3) {Led1Off(); Led2Off(); Led3On(); Led4Off();}
if (distanceMINat == 4) {Led1Off(); Led2Off(); Led3Off(); Led4On();}
}
else {Led1Off(); Led2Off(); Led3Off(); Led4Off();}
if (distanceMIN<DISTANCE_MINIMUM) BeepON();
else if (distanceMIN<DISTANCE_BEEP1) PulseBeep1();
else if (distanceMIN<DISTANCE_BEEP2) PulseBeep2();
else if (distanceMIN<DISTANCE_BEEP3) PulseBeep3();
else BeepOFF();
}
}
Kód: Vybrať všetko
uint8_t MeasurePDC1()
{
MakePulsePDC1(); //make start pulse for PDC
TCNT0 = 0; //reset timer
while ((TCNT0 < 8)&&(PINC & (1<<PC0)) ); //wait to first falling edge generated by PDC or 8 on timer. This is used for check connected PDC.
if (TCNT0>=8) return 255;//if timer ended at value specified above set distance to max (PDC not connected)
else //else we can measure distance
{
TCNT0 = 0; //reset timer
while (TCNT0 < MAXIMUM_PDC_TRANSMIT_TIME); //wait till low pulse generated by PDC should be at H. This is done to check if obstacle is not too close.
if ((PINC & (1<<PC0))==0) return 0;//if pulse is held low return 0 as obstacle is too close
while ((TCNT0 < 255)&&((PINC & (1<<PC0)) == 0) ); //wait to rising edge or 255 on timer
if (TCNT0==255) return 255;//if timer ended distance is max (no rising edge found)
while ((TCNT0 < 255)&&(PINC & (1<<PC0)) ); //wait to falling edge or 255 on timer
if (TCNT0==255) return 255;//if timer ended distance is max
else
{
return (TCNT0);//return TCNT0 as distance
}
}
return 255; //should never happened
}
0
Merať znamená vedieť.
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Modul parkovacich senzorov / univerzalny "auto" modul
Pekné, len poznámka k tým vstupom. Málokedy je v palubnej sieti 12V. Bolo by ich treba nejako chrániť, aby si neodpísal ten MCU.
0
Re: Modul parkovacich senzorov / univerzalny "auto" modul
Hej sú tu takí.Duro napísal:dik, za +, cakal som skor obvyklu miestnu kritiku..
Vacsina bizuterie je 0603, takze sa to da pajkovat normalou pajkou v pohode. Nie je to sice idealne ako reflow i ked raz by som si rad urobil piecku s ktorou by to malo byt o poznanie lepsie.
0603 to je už len taký prach. Ja robím väčšinou s 1206. Stane sami, že mi to vystrelí z pinzety a už to nenájdem.
0
- zawin
- Administrátor
- Príspevky: 2639
- Dátum registrácie: 17 Júl 2006, 00:00
- Vek: 34
- Kontaktovať používateľa:
Re: Modul parkovacich senzorov / univerzalny "auto" modul
Pekná práca, teší ma že si sa inšpiroval mojim článkom Mohol by si spraviť krátke video ako to beží?
0
Sú dve veci, ktoré sú nekonečné - vesmír a ľudská hlúposť. Ale s vesmírom som si ešte nie celkom istý. /Einstein/
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 1 Odpovedí
- 537 Zobrazení
-
Posledný príspevok od používateľa passion