OpenXsensor met Arduino Nano
Ik ben onlangs overgestapt van de Arduino Pro Mini’s naar de Nano vanwege verschillende dingen:
- Stabiele klok @ 16Mhz met lage spanningen, nodig voor multi-in-one sensorconfiguratie.
- 3.3v-uitgang, ook gebruikt voor VREF (referentiespanning voor analoge sensoren, spanning, stroom enz.)
- Direct programmeerbaar via USB
- Goedkoper dan Pro Mini’s
https://github.com/openXsensor/openXsensor
Een stroomsensor configureren voor gebruik met ETHOS
Een opmerking voor wie stroomsensoren wil bouwen voor gebruik met ETHOS.
Zoals voor nu, zendt OpenXsensor negatieve waarden rond 0 ampère uit.
Deze negatieve waarden worden in Ethos als ongeldig beschouwd.
Daarom zal Ethos uiteindelijk steeds sensor verloren aankondigingen.
Om dit te voorkomen, moeten we er zeker van zijn dat OpenXsensor alleen 0 of positieve waarden uitstuurt.
in het bestand: openXsensor/ oXs_out_frsky.cpp
Zoek naar het volgende op regel 597:
#if defined(ARDUINO_MEASURES_A_CURRENT) && (ARDUINO_MEASURES_A_CURRENT == YES) if ( oXs_Current.currentData.milliAmps.available) { oXs_Current.currentData.milliAmps.available = false ; sport_currentData.value = oXs_Current.currentData.milliAmps.value / 100 ; sport_currentData.available = true ; } #elif defined(AN_ADS1115_IS_CONNECTED) && (AN_ADS1115_IS_CONNECTED == YES ) && defined(ADS_MEASURE) && defined(ADS_CURRENT_BASED_ON) if ( oXs_ads1115.adsCurrentData.milliAmps.available ) { oXs_ads1115.adsCurrentData.milliAmps.available = false ; sport_currentData.value = oXs_ads1115.adsCurrentData.milliAmps.value / 100 ; sport_currentData.available = true ; } #endif
en verander het in:
#if defined(ARDUINO_MEASURES_A_CURRENT) && (ARDUINO_MEASURES_A_CURRENT == YES) if ( oXs_Current.currentData.milliAmps.available) { oXs_Current.currentData.milliAmps.available = false ; sport_currentData.value = oXs_Current.currentData.milliAmps.value / 100 ; if (sport_currentData.value >= 0) { sport_currentData.available = true ; } } #elif defined(AN_ADS1115_IS_CONNECTED) && (AN_ADS1115_IS_CONNECTED == YES ) && defined(ADS_MEASURE) && defined(ADS_CURRENT_BASED_ON) if ( oXs_ads1115.adsCurrentData.milliAmps.available ) { oXs_ads1115.adsCurrentData.milliAmps.available = false ; sport_currentData.value = oXs_ads1115.adsCurrentData.milliAmps.value / 100 ; if (sport_currentData.value >= 0) { sport_currentData.available = true ; } } #endif