Meranie teploty openXsensor (OXS) má už v základe. Je možné použiť LM35, prípadne nejaký NTC temistor, a pripojiť ich … na analógové vstupy. Lenže ja som chcel digitálne meranie s DS18B20. Snímač otáčok motora je možné buď pripojením na budenie motora – a to nemeria otáčky pri voľnobehu – alebo bezkontaktne opticky, či magneticky. No a doplniť do OXS funkciu Model_QID som chcel, pretože prijímače D8R-II Plus – ktoré používam v modeloch – nemajú model ID, ako majú prijímače X-kovej rady.
1, Meranie teploty s DS18B20.
DS18B20 je digitálny teplotný snímač s rozlíšením 9 až 12 bit, meracím rozsahom -55°C až +125°C a rozlíšením až 0.0625°C. Datasheet je tu. Snímač na pripojenie potrebuje tri vodiče: zem, +5V a signál. Každý snímač má vlastnú unikátnu 64- bitovú adresu, snímače je možné zapájať paralelne, t.j. všetky na jednu zbernicu. Podľa FrSky Hub protokolu je možné merať najviac dve teploty s rozlíšením 1°C. K Arduinu sa pripája na pin č. 3. Medzi pin č.3 a +5V ( Vcc ) je nutné zapojiť odpor 4k7. Vo vysielači majú teploty označenie Temp1 a Temp2.
Adresy oboch DS18B20 je treba prečítať cez address reader a zadať do openXsensor_20_RPM_DS1820_QID.ino, premenné Probe01 a Probe02.
Komentár k programu:
Pin 3 je definovaný v oXs_config_advanced.h, kapitola 12.
V openXsensor_20_RPM_DS1820_QID.ino sú úpravy týkajúce sa merania teploty vyznačené kľúčovým slovom „DS1820“.
2, Meranie otáčok s TLE4905L.
Na meranie otáčok som použil unipolárnu hallovu sondu TLE4905L. Datasheek k hall sonde je tu. Je treba dať pozor na polaritu magnetu, sonda reaguje len na – asi severný – pól. TLE4905L má výstup typu otvorený kolektor: do plusu som dal odpor 560ohm v sérii so zelenou LED, obe v SMD prevedení veľkosto 0805. Na Arduine je vstupom pin č. 8 – nie je možné zmeniť. Ako držiak som použil kúsok univerzálneho plošného spoja.
Magnety som použil tieto( typ VMM4-N35, kód 20102 ), priemer 4mm, výška 2mm. Pre heliny mám ešte v zásobe tieto( typ VMM5UH-N35UH, kód 20477 ), priemer 2mm, výška 3mm.
Dosah majú cca 3-4 mm, s TLE4905L chodia spoľahlivo. Držiak na motor som navrhol vo FreeCad a vytlačil na 3D tlačiarni. Magnety aj polohu držiaka na motore som zakvapol 5- minútovým Epoxy. Držiaky pre 28mm aj 35mm motor sú tu.
Pre FrSky protokoly parameter #define PULSES_PER_ROTATION 2 v oXs_config_advanced.h program ignoruje. Do vysielačky posiela priamo frekvenciu v Hz, RPM z toho prepočítava OpenTX vo vysielačke.
3, Model_QID.
Čo je to Model_QID som popísal v tomto článku. V OXS je možné posielať Model_QID ako FUEL_LEVEL, alebo AccX.
V openXsensor_20_RPM_DS1820_QID.ino sú úpravy týkajúce sa Model_QID vyznačené kľúčovým slovom „Model_QID“.
4, Procesorová doska.
Procesorovú dosku som použil štandardne Arduino Mini Pro. Z dosky som odspájkoval reset tlačidlo. Pre istotu 🙂
Stavba vyzerala nejako takto:
Zľava: prototyp RPM senzora, dva teplotné snímače s DS18B20, GPS, OpenXSensor.
Do modelov, kde treba šetriť každý gram v papierovom boxe:
5, Program.
Program je možné stiahnuť tu: openXsensor_20_RPM_DS1820_QID.
6, Skúšky.
Na skúšky som použil obľúbeného Suchoja:
Snímač Temp2 je pod akumulátorom ( vľavo ), Temp1 meria vonkajšiu teplotu ( vpravo od OXS ).
Zobrazenie na vysielačke.
Varovanie pre Model_QID:
Telemetrická obrazovka Suchoja:
No a nejaké logy z lietania:
Otáčky vs. odoberaný prúd.
Vonkajšia teplota ( Temp1 ) a teplota akumulátora ( Temp2 ).
7, Známe obmedzenia.
Pri skúške s prijímačom X6R dochádzalo pri súčasnom meraní teploty s DS18B20 a použití GPS k výpadkom z GPSky. Ďalšie skúšky s X8R budú pokračovať, keď mi príde prijímač, ktorý je t.č. na ceste.
8, Záver.
Funguje to. Ešte mám v pláne jednu fintu, ako pridať ďalšie dve merania teploty – teplota motora a teplota regulátora – ale to až keď bude čas 🙂