Lēts gaisa šautenes hronogrāfs


Šajā rakstā mēs apskatīsim, kā jūs varat izveidot vienkāršu hronogrāfu no lētām un pieejamām detaļām. Ierīce ir nepieciešama, lai izmērītu lodes ātrumu no šautenes. Šie skaitļi ir nepieciešami, lai noteiktu šautenes stāvokli, jo laika gaitā daži pneimatiskie komponenti nolietojas un ir jānomaina.

Sagatavojam nepieciešamos materiālus un instrumentus:
- Ķīnas Digispark (pirkšanas brīdī tas maksāja 80 rubļus);
- segmenta tipa displejs uz TM1637 (pērkot maksāja 90 rubļus);
- infrasarkanās gaismas diodes un fototranzistori (10 pāri) - izmaksas bija 110 rubļi;
- simts 220 omu rezistori maksā 70 rubļus, bet būs nepieciešami tikai divi no tiem.

Tas arī viss, šis ir viss to preču saraksts, kuras jums būs jāiegādājas. Starp citu, rezistorus var atrast arī vecā sadzīves tehnika. Jūs varat likt vairāk par nominālvērtību, bet ne mazāk. Rezultātā jūs varat satikt 350 rubļus, taču tas nav tik daudz, ņemot vērā, ka rūpnīcas hronogrāfs maksās vismaz 1000 rubļu, un montāža tur ir daudz sliktāka nekā mūsu paštaisītā.

Cita starpā jums ir jāuzkrāj tāda informācija kā:
- vadi;
- vismaz 10 cm garš caurules gabals (piemērota plastmasas santehnika);
- viss lodēšanai;
- multimetrs (pēc izvēles).


Pirmajām trim aprakstītajām detaļām ir savas nianses, tāpēc katra no tām ir jāapsver atsevišķi.

Digispark
Šis vienums ir miniatūra tāfele, kas ir saderīga ar Arduino, un tajā ir ATtiny85. Kā savienot šo elementu ar Arduino IDE, varat lasīt tālāk, tur varat arī lejupielādēt draiverus.
Šai platei ir vairākas iespējas, viena izmanto microUSB, bet otra ir aprīkota ar USB savienotāju, kas ir pieslēgts tieši uz tāfeles. Sakarā ar to, ka pašdarinātajam izstrādājumam nav individuāla barošanas avota, autors izvēlējās pirmo dēļa versiju. Ja ievietojat akumulatoru vai akumulatoru mājās gatavotā izstrādājumā, tas ievērojami palielinās tā cenu un neietekmēs praktiskumu. Un gandrīz katram ir kabelis mobilā un Power bankas uzlādēšanai.


Runājot par īpašībām, tie ir līdzīgi ATtiny85, šeit tā iespējas ir vairāk nekā pietiekami. Mikrokontrolleris hronogrāfā aptaujā tikai sensorus un kontrolē displeju.
Ja ar Digispark vēl neesi ticies, svarīgākās nianses var redzēt tabulā.


Ir svarīgi ņemt vērā faktu, ka funkcijas analogRead() pin numerācija ir atšķirīga. Un trešajā tapā ir uzvilkšanas rezistors ar nominālo vērtību 1,5 kOhm, jo ​​to izmanto USB.

Daži vārdi par displeju
Var izmantot jebkuru pašmāju izstrādājumu displeju, taču autors izvēlējās lētu iespēju. Lai padarītu ierīci vēl lētāku, displeju var pilnībā atteikties. Datus var vienkārši izvadīt uz datoru, izmantojot kabeli. Šeit tas būs vajadzīgs. Aplūkotais displejs ir displeja kopija.
Kā displejs izskatās priekšā un aizmugurē, var redzēt fotoattēlā.




Tā kā attālumi starp cipariem ir vienādi, tad, ja kols ir izslēgts, cipari tiek nolasīti bez problēmām. Standarta bibliotēka spēj izvadīt skaitļus diapazonā no 0 līdz 9. burti diapazonā a-f, un ir arī iespēja mainīt visa displeja spilgtumu. Ciparu vērtības var iestatīt, izmantojot displeja funkciju (int 0-3, int 0-15).


Kā lietot displeju

// 1. Deklarējiet galvenes failu
#iekļauts
// 2. Iestatiet tapas
#define CLK 0
#define DIO 1
// 3. Deklarē objektu
TM1637 tm1637 (CLK, DIO);
// 4. Inicializēt
anulēt iestatīšanu()(
tm1637.init();
tm1637.set(6); // Spilgtums
}
// 5. Izmantot
void loop() (
// Displejā parādiet ciparu x
int x = 1234;
tm1637.displejs(0, x / 1000);
tm1637.displejs(1, x / 100% 10);
tm1637.displejs(2, x / 10% 10);
tm1637.displejs(3, x % 10);
kavēšanās (500);
}

Ja mēģināt pārsniegt vērtības, displejā būs redzams apjukums, kas, kā arī viss pārējais, nav statisks. Tāpēc, lai parādītu īpašās rakstzīmes, piemēram, grādus, mīnusus utt., jums būs jāmācās.


Autore vēlējās, lai displejā būtu redzama lodes lidojuma gatavo enerģija, kas tiktu aprēķināta atkarībā no lodes ātruma un masas. Kā plānots, vērtībām bija jābūt parādītām secīgi, un, lai saprastu, kur atrodas, tās kaut kā jāatzīmē, piemēram, izmantojot burtu “J”. Kā pēdējo līdzekli jūs varat vienkārši izmantot kolu, taču tas autoram nederēja, un viņš uzkāpa bibliotēkā. Rezultātā, pamatojoties uz displeja funkciju, tika izveidota funkcija setSegments(baitu adr., baitu dati), kas izgaismo datos iekodētos segmentus ciparā ar adr numuru:


{
tm1637.start();
tm1637.stop();
tm1637.start();
tm1637.writeByte(addr|0xc0);
tm1637.writeByte(data);
tm1637.stop();
tm1637.start();
tm1637.stop();
}

Šādi segmenti tiek kodēti diezgan vienkārši, zemais datu bits ir atbildīgs par augšējo segmentu, un pēc tam pulksteņrādītāja virzienā, 7. bits ir atbildīgs par vidējo segmentu. Kodētā rakstzīme "1" izskatās kā 0b00000110. Astotais nozīmīgākais bits ir atbildīgs par kolu, tas tiek izmantots otrajā ciparā un tiek ignorēts visos citos. Pēc tam autors automatizēja kodu iegūšanas procesu, izmantojot programmu Excel.


Kas notika beigās, var redzēt fotoattēlā




#iekļauts
#define CLK 0
#define DIO 1
TM1637 tm1637 (CLK, DIO);

Void setSegments (baitu adrs, baitu dati)
{
tm1637.start();
tm1637.writeByte(ADDR_FIXED);
tm1637.stop();
tm1637.start();
tm1637.writeByte(addr|0xc0);
tm1637.writeByte(data);
tm1637.stop();
tm1637.start();
tm1637.writeByte(tm1637.Cmd_DispCtrl);
tm1637.stop();
}

anulēt iestatīšanu()(
tm1637.init();
tm1637.set(6);
}

void loop() (
// Izvade Sveiki
setSegments(0, 118);
setSegments(1, 121);
setSegment(2, 54);
setSegments(3, 63);
kavēšanās (500);
}



Un visbeidzot, sensori

Precīza informācija par sensoriem netiek sniegta, zināms vien, ka tiem ir 940 nm viļņa garums. Eksperimentu laikā tika konstatēts, ka sensori nespēj izturēt strāvu, kas lielāka par 40 mA. Attiecībā uz barošanas spriegumu tas nedrīkst būt lielāks par 3,3 V. Kas attiecas uz fototranzistoru, tam ir nedaudz caurspīdīgs korpuss un tas reaģē uz gaismu.


Sāksim montēt un uzstādīt mājās gatavotu produktu:

Pirmais solis. Montāža

Viss ir salikts pēc ļoti vienkāršas shēmas. No visām tapām būs nepieciešami tikai P0, P1 un P2. Pirmie divi tiek izmantoti displejam, un P2 ir nepieciešams, lai sensori darbotos.
Kā redzat, viens rezistors tiek izmantots, lai ierobežotu gaismas diožu strāvu, bet otrais velk P2 uz zemi. Sakarā ar to, ka fototranzistori ir savienoti paralēli, kad lode iet priekšā jebkuram optronam, spriegums pāri P2 samazināsies. Lai noteiktu lodes ātrumu, jums jāzina attālums starp sensoriem, jāizmēra divi jaudas pārspriegumi un jānosaka laiks, kurā tie radušies.
Sakarā ar to, ka tiks izmantota tikai viena tapa, nav nozīmes, no kuras puses šaut. Fototranzistori tik un tā pamanīs lodi.










Viss ir salikts no detaļām, kas redzamas bildē. Lai visu saliktu, autore nolēma izmantot maizes dēli. Pēc tam visa konstrukcija stiprībai tika piepildīta ar karsti kausētu līmi. Sensorus novieto uz caurules un pielodē pie tiem vadus.
Lai novērstu diožu pulsāciju, kad tās darbina jaudas banka, autors paralēli gaismas diodēm uzstādīja 100 uF elektrolītu.




Svarīgi ir arī atzīmēt, ka P2 tapa tika izvēlēta ne velti, fakts ir tāds, ka P3 un P4 tiek izmantoti USB, tāpēc tagad ar P2 palīdzību pēc montāžas ir iespējams zibspuldzi paštaisītam izstrādājumam.
P2 ir arī analogā ieeja, tāpēc nav nepieciešams izmantot pārtraukumu. Jūs varat vienkārši izmērīt rādījumus starp pašreizējo un iepriekšējo vērtību, ja starpība pārsniedz noteiktu slieksni, tas nozīmē, ka šajā brīdī lode tikai iet garām optrona.

Otrais solis. Programmaparatūra

Prescaler ir frekvences dalītājs, standarta gadījumos tādos paneļos kā Arduino tas ir 128. Šis skaitlis ietekmē to, cik bieži tiek aptaujāts ADC. Tas ir, noklusējuma 16 MHz iznāk 16/128 = 125 kHz. Katra digitalizācija sastāv no 13 darbībām, tāpēc tapu var aptaujāt ar maksimālo ātrumu 9600 kHz. Praksē tas nav lielāks par 7 kHz. Rezultātā intervāls starp mērījumiem ir 120 μs, kas ir pārāk garš paštaisītam darbam. Ja lode lido ar ātrumu 300 m/s, tā šajā laikā veiks 3,6 cm attālumu, tas ir, kontrolieris to vienkārši nespēs pamanīt. Lai viss darbotos pareizi, intervālam starp mērījumiem jābūt vismaz 20 µs. Lai to izdarītu, dalītāja vērtībai jābūt vienādai ar 16. Autors izveidoja dalītāju ar 8, kā to izdarīt, var redzēt zemāk.


#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

anulēt iestatīšanu()(
sbi (ADCSRA, ADPS2);
cbi(ADCSRA,ADPS1);
cbi(ADCSRA,ADPS0);
...
}


Kas notika, lai uzzinātu eksperimenta laikā, ir redzams fotoattēlā

Programmaparatūras loģikai ir vairāki posmi:

Atšķirības mērīšana starp vērtībām uz tapas pirms un pēc;
- ja starpība pārsniedz slieksni, cilpa iziet un tiek saglabāts pašreizējais laiks (mikro());
- otrais cikls darbojas līdzīgi kā pirmais, un ciklā ir laika skaitītājs;
- ja skaitītājs ir sasniedzis norādīto vērtību, tiek parādīts kļūdas ziņojums un pāreja uz sākotnējo stāvokli. Šajā gadījumā cikls neiet mūžībā, ja lodi pēkšņi neuztvēra otrais sensors;
- ja skaitītājs nav pārpildīts un vērtību starpība ir lielāka par slieksni, tiek mērīts pašreizējais laiks (mikro());
- tagad, pamatojoties uz laika un attāluma atšķirību starp sensoriem, varat aprēķināt lodes ātrumu un parādīt informāciju ekrānā. Nu tad viss sākas no jauna.

Pēdējais posms. Testēšana
Ja viss ir izdarīts pareizi, ierīce darbosies bez problēmām. Vienīgā problēma ir slikta reakcija uz dienasgaismas un LED apgaismojumu ar pulsācijas frekvenci 40 kHz. Šajā gadījumā ierīcē var rasties kļūdas.

Pašdarināts darbojas trīs režīmos:

Pēc ieslēgšanas atskan sveiciens, un pēc tam ekrāns ir piepildīts ar svītrām, kas norāda, ka ierīce gaida kadru


Ja rodas kļūdas, tiek parādīts ziņojums "Err" un pēc tam tiek ieslēgts gaidīšanas režīms.


Nu tad nāk ātruma ierobežojums


Uzreiz pēc šāviena ierīce parādīs lodes ātrumu (apzīmēts ar simbolu n), un pēc tam tiks parādīta informācija par lodes enerģiju (simbols J). Rādot džoulus, tiek parādīts arī kols.
Līdzīgi raksti

2022 videointercoms.ru. Palīgstrādnieks - Sadzīves tehnika. Apgaismojums. Metālapstrāde. Naži. Elektrība.