SoftwareSerial data overzetten werkt niet

algemene C code
Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor Koepel » 02 Okt 2019, 12:46

De Arduino Mega 2560 heeft als enig Arduino board pullup weerstanden op de SDA en SCL van 10k naar 5V.
Je kunt echt beter een level shifter voor de I2C bus gebruiken voor de ADXL-345.
Met name de nieuwere Bosch sensoren zijn erg gevoelig voor teveel spanning die via de SDA en SCL doorlekt naar de sensor.
Ik adviseer om ook op andere boards (Nano, Uno, Leonardo) een level shifter te gebruiken bij een 3.3V sensor. Als je bij die boards het goed berekent (meestal met 4k7 pullup naar 3.3V) dan kan het soms werken.

Voor het omzetten van serieel naar integers kun je een kleine test-sketch maken.
Graag een volledige sketch die wij ook even kunnen proberen.

Heb je deze al bekeken: https://www.arduino.cc/reference/en/language/functions/communication/serial/parseint/. Maar daar ga ik sip van kijken zoals ik schreef. Met die regel met sscanf() zet je ze alledrie om, en tevens wordt gecontroleerd of de '<' en '>' en ',' kloppen.

Advertisement

Berichten: 78
Geregistreerd: 03 Okt 2014, 17:16

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor ilioSS » 02 Okt 2019, 13:05

Hallo Koepel,

Het testen van de MISO even in detail bekeken.
Het MISO signaal middels een weerstand aan 5V en GND leggen?
Dit begrijp ik niet helemaal. Aan de 5V EN GND .

Wat ik eruit op maak is dat het MISO draadje tussen de sensor en MEGA gaat. Hieraan kan ik twee weerstanden 4k7 knopen een aan GND en de andere aan de 5V.
Is dat de bedoeling? In beide gevallen is het signaal gedefinieerd toch?

Hoor graag van je.

Met vriendelijke groet,
ilioSS

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor shooter » 02 Okt 2019, 15:29

als je zowel een weerstand aan de 5V hangt als aan gnd, komt er een spanning te staan van 2.5 Volt, dus als het open is zul ja vanalles kunnen hebben, maar meestal zie je een HOOG.
Laag is maar tot 1 volt.
paul deelen
shooter@home.nl

Berichten: 78
Geregistreerd: 03 Okt 2014, 17:16

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor ilioSS » 03 Okt 2019, 19:59

Hallo Shooter,

Ja, twee weerstanden maakt een mooie spanningsdeler. Niet echt de bedoeling lijkt mij.
Een weerstand zowie zo als hij maar hoogomig is geeft een definitie aan een signal als hij niet aangestuurd word toch?
Zwevend is soms niet gewenst.
Is de weerstand dusdanig qua grote juist gekozen dan kan het niet verkeerd gaan als het signaal gestuurd word. Trekt het signaal danwel hoog of laag.
4k7 lijkt mij acceptabel.

Zit ik er ver naast?
Met vriendelijke groet,
ilioSS

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor Koepel » 03 Okt 2019, 20:14

Mijn uitleg kon inderdaad beter.

Bij een Arduino Mega heb je allereerst een SPI module nodig die geschikt is voor 5V.
Vervolgens is het nodig om de Chip Select niet te activeren. Dat kan met een draadje naar de 5V pin of een sketch die de pin hoog maakt.
Dan pak je een multimeter om de spanning van de MISO te meten. Een paar clipjes/haakjes aan de meetpennen is handig.
Vervolgens met bijvoorbeeld 4k7 weerstand tussen 5V en MISO. Dan moet het MISO signaal dicht bij de 5V zijn.
Vervolgens die weerstand tussen GND en MISO. Dan moet het MISO signaal dicht bij 0V zijn.

Op die manier kun je de vervelende module vinden die de SPI helemaal alleen voor zichzelf wil houden.
Je kunt ook de schema's van de modules zoeken en kijken hoe dat er uit ziet.

Helaas is dat nog niet alles. Soms wordt het MISO signaal van een 3.3V chip zo doorgegeven aan het Arduino board, zonder dat er een 5V signaal van gemaakt wordt. Als er dan een tweede SPI module aan wordt verbonden die wel op 5V werkt, dan kan die het MISO signaal hoog maken. Er loopt dan 5V in het MISO signaal van de 3.3V chip die stuk kan gaan.
Het is dus nogal een puinhoop op de SPI-bus.

Wat dacht je van een 3.3V Arduino board ? Als het maar niet de Due is.

Berichten: 78
Geregistreerd: 03 Okt 2014, 17:16

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor ilioSS » 06 Okt 2019, 16:33

Hallo Koepel,

Wederom hartelijk dank voor je reactie mbt het SPI MISO verhaal.
Is nu duidelijk om het gammele unit eruit te vissen.

Met het werkend krijgen via de i2c is het MISO verhaal eigenlijk op de achtergrond geraakt en ik denk dat ik dat zo ga houden. ( voorwaarts naar werkende scripts) Ik ben wel geholpen maar het SPI euvel is niet opgeklaard.
Tja een 3.3v board heb ik wel maar dat is idd een DUE.
Ik ga pro-mini 3.3v bestellen duurt dus wel ff.

In feite ben ik rond met mijn aardschok logger.
Ik heb de adxl-345 de klok en de SD kaart en het display keurig werkend.
Hiervoor nog wat testjes gedaan met een ADXL-345 van Sparkfum met een signal leveler 2chan. Banggood ff uitvogelen dat slechts de TX gebruikt kon worden en werken.Dit boardje van Sparkfun had ook geen i2c pull-up weerstanden?

Rest mij nog een juiste log format te kiezen. Excel bewerking enzo. voor een graphic in geval van aardschokken. En het inbouwen in een kastje.

Volgende project is het loggen van de buiten temp. middels een BME280 en een radio nRF24 met solarcell en een back-up bat. met een RTC3231 voorde puls power_down om slechts om de 5 minuten een uitlezing door te sturen e.e.a. om de bat. te sparen.
Ook wil ik hiervoor de 3.3v pro-mini gebruiken.
Een datalog board met DS1307 gaat niet lukken om in sleep te gaan.
Dus ik moet ook een rtc3231 bestellen duurt ook weer.


Koepel nogmaals bedankt voor je hulp.
Uit je support heb ik motivatie gehaald om netter te werken in de scripts.

Met vriendelijke groet,

ilioSS

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor Koepel » 08 Okt 2019, 03:59

Zou je wat meer met links willen strooien ?

Dit is de level shifter van Sparkfun: https://www.sparkfun.com/products/12009.
Daar zie ik geen "TX".
Die heeft 10k pullup weerstanden aan de "hoge kant" en 10k pullup aan de "lage kant" op alle vier kanalen.

Dit is een level shifter op Banggood: https://www.banggood.com/3_3V-5V-TTL-Bi-directional-Logic-Level-Converter-For-Arduino-p-949438.html.
Dat is een beetje een rare. Is alleen TX te gebruiken ? Hij heeft wel overal pullup weerstanden.

Ik gebruik deze: https://www.aliexpress.com/item/32891830852.html.
Daar hebben ze de "hoge kant" "A" genoemd, en de "lage kant" is "B". Er zitten ook pullup weerstanden op.
Die heeft zelf een voltage regulator voor de 3.3V, dus alleen 5V is nodig. Dat kan handig zijn bij een "Pro Micro" Arduino board, want die heeft geen 3.3V pin.

Zo'n level shifter werk alleen als zowel de spanning op de "hoge kant" is aangesloten alsook de spanning op de "lage kant".
Dus 5V verbinden met HV, en 3.3V verbinden met LV. En de GND verbinden natuurlijk.

Zo'n level shifter is maar een gebrekkig hulpmiddel. Lees het onderdeel "Be careful with I2C level shifters" maar eens: https://github.com/Koepel/How-to-use-the-Arduino-Wire-library/wiki/Tricks-that-are-(almost)-allowed#be-careful-with-i2c-level-shifters.

Berichten: 78
Geregistreerd: 03 Okt 2014, 17:16

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor ilioSS » 14 Okt 2019, 15:29

Hallo Koepel.

Ja ik zal wat gebruik maken van links als dat zo uitkomt.
Btw. laatst wilde ik een foto plaatsen maar het formaat werd niet geaccepteerd iets met pixels?
Dan te groot dan te klein kreeg ik het idee klopt dat?

De level shifter heb ik aangesloten en werkt geen probleem verder. En met de 3.3 volt onderdelen onderweg gaat dat opgelost worden.
Vervelend de pro-micro 3.3 volt heeft een drie weken extra levertijd : https://www.banggood.com/nl/3Pcs-3_3V-8 ... rehouse=CN

Met het stroom besparen ben ik blijven hangen op 17mA met een pro mini op een solarcel met 1200mA/h batt. een voltregulator een batt. charger pcb en de BME280.
Dit werkt nu al dagen en bij mooi weer laad de batt. en houd de hele opzet aan de gang.
Blijft knagen dat ik de radio niet kan laten slapen dat scheelt algauw ook weer vele mAmps.

Foto is below zero.
Met vriendelijke groet,
ilioSS
Bijlagen
pro-mini test_03.jpg
pro-mini test_03.jpg (8.59 KiB) 8054 keer bekeken

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor Koepel » 16 Okt 2019, 01:00

De foto op dit forum kan maximaal 640x480 zijn. Er is nu nauwelijks iets op de foto te zien :(

Een 8MHz 3.3V Pro Mini kan goedkoper: https://www.aliexpress.com/item/32922183435.html.
Je kunt het power ledje en de voltage regulator er af solderen, als je 3.3V hebt om het te laten werken.

Een DC-DC converter is efficienter dan een ouderwetse voltage regulator.

De nRF24 modules hebben een sleep mode. Dat zal niet door iedere library ondersteunt worden.

Berichten: 78
Geregistreerd: 03 Okt 2014, 17:16

Re: SoftwareSerial data overzetten werkt niet

Berichtdoor ilioSS » 16 Okt 2019, 20:22

Hallo Koepel,

Ziet er idd niet uit de foto met dit formaat voortaan maar achterwege laten.
Tja, nog goedkoper. Banggood daar heb ik goede ervaring mee dus vandaar. Enkele dubbeljes kost de kop niet.
Het los solderen van de regulator en de LED ga ik proberen.
En de zoektocht naar de nRF24 sleep toepasbaar voor mijn toepassing heb ik nog niet losgelaten. Word vervolgt.

BTW. niet alleen met de nRF ook de ESP server is een optie die mogelijk meer flexible is en meer mogelijkheden. ( ben bezig de sensor data uit een HTTP pagina dump string te vissen om op een LCD display te zetten. )
Ik vermaak me prima met het uit vlooien van deze materie.
Alle bij Banggood bestelde onderdelen zijn onderweg ff wachten dus.
Blijft verwonderlijk dat een sensor uit China haast goedkoper is dan het verzenden van een brief binnen Nederland.

Met vriendelijke groet,
ilioSS

Vorige

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 10 gasten