Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - WillemH

Pages: 1 2
16
General Discussion / Re: GPS TinyShield does not provide actual altitude
« on: August 27, 2020, 09:03:29 AM »
Herewith the results of a vertically oriented trajectory trial with the u-blox SAM-M8Q GPS instead of the Telit JF2 GPS.

The u-blox SAM-M8Q GPS on the Sparkfun GPS 15210 board is connected to a TinyZero set through a proto shield (both I2C and UART). The set consists of a TinyZero Processor Board with accelerometer,  a MicroSD TinyShield , a Barometric Pressure TinyShield and on top the proto shield.

I have chosen to control the GPS settings through I2C and to use a selection of NMEA strings as output through UART set at 19200 baud rate. Using two separate buffer memories the NMEA strings are recorded in a .txt file and accelerometer outputs, barometer outputs, time stamps and other administrative data like buffer usage are recorded in a .csv file.

The NMEA GPS string set consists of GGA, GSA (separate strings for GPS and GLONASS) and VTG strings at 5 Hz. The dynamic platform model of the GPS is set to nr 8: “Airborne <4g”, with e.g. maximal vertical velocities up to 100 m/s.

The setup of the trial was comparable with the one as described earlier, but now with an additional barometric pressure sensor in the nose cone of the model rocket, MER-75 with a 75 mm diameter.

The trial was executed on August, 15 near Almere, The Netherlands, with a surface height of -6 m with respect to sea level. Readings of the Altimeter 2: Apogee: 111 m, altitude at parachute ejection: 109 m above ground level.
The attached figures show some results of the trial.

The first figure shows the latitude, longitude and altitude of the trajectory derived from the NMEA GGA strings and transformed to xyz in m with the launch position as origin. Spheres are in red before ejection of the nose cone / parachute and in blue after. The second figure provides the top view, so xy only in m. The third figure vertically shows the altitude (in m) derived  from the barometric pressure sensor (now the one in the nose cone) and the u-blox SAM-M8Q GPS for the time interval including model rocket launch, boost phase, ballistic phase, nose cone / parachute ejection etc up to landing. The horizontal axis shows the time in milliseconds.

While the acceleration during launch shows a short peek > 4g, the GPS was not losing track ; outputs look fine.
The number of satellites tracked during the trajectory was constantly 12. All GGA messages during the shown time interval showed a Differential GPS fix.

As can been seen in the third figure the altitude values from GPS and barometric pressure sensor are rather close to each other. The GPS curve is very smooth, but altitudes before and after the trajectory differ more than the expected order of 1m, presumably because of noise.

In contrast with the Telit JF2 GPS, the u-blox SAM-M8Q GPS on the Sparkfun GPS 15210 board provides actual and useful altitude outputs.
As mentioned before, the major drawback is the large size of the Sparkfun breakout board, approx. 41 x 41 mm, which does not enable application in smaller diameter model rockets.

17
General Discussion / Re: GPS TinyShield does not provide actual altitude
« on: August 12, 2020, 11:21:25 AM »
Hello Laveréna,

It would be nice to find a fix for the JF2, because it is a nice small solution.

In the mean time I am experimenting with the Sparkfun GPS 15210 connected to a TinyZero set through a proto shield. This Sparkfun board has a very flexible GPS:  u-blox SAM-M8Q. In fact it is a GNSS with default GPS and GLONASS and features e.g. different dynamic platform models. Only drawback is the large size of the Sparkfun breakout board.  The SAM-M8Q GPS chip including patch antenna is small, only 15.5 x 15.5 x 6.3 mm. Perhaps it would fit on a bit higher TinyShield. That it is higher would not be a problem, because it is logical to use it as top shield because of the antenna.

The Telit “JF2 Hardware User Guide” can be found e.g. by Google using the search term “JF2 Hardware User Guide”.

Two results in the top 10 give access to this pdf document Rev.4 from 2013-04-09, links:
 
https://media.digikey.com/pdf/Data%20Sheets/NAVMAN%20Wireless%20PDFs/JF2_Hardware_UG.pdf

https://www.manualslib.com/download/1573008/Telit-Wireless-Solutions-Jf2.html

In the top 10 there is also a link for r5 (Rev. 5 I assume) to the Telit download zone, but that is only for direct Telit customers, and I am not. Perhaps TinyCircuits is a direct customer.

I hope this information is useful.

Willem


18
General Discussion / Re: GPS TinyShield does not provide actual altitude
« on: August 06, 2020, 10:25:29 AM »
In the mean time I have found another Telit JF2 GPS related document on the web, “JF2 Hardware User Guide”, in which it is mentioned in paragraph 11.6.3:

“By default, the JF2 will compute a 2-D solution when possible when performing initial acquisition. In a 2-D solution, the receiver assumes a value for altitude and uses it to estimate the horizontal position.” And also

“To accommodate applications for which these situations are a concern, a version of JF2 firmware is offered that requires a calculated altitude, i.e. a 3-D navigational solution, in order for the receiver to first enter navigation.”

So in fact it is stated that the JF2 by default does not directly calculate the altitude, but basically only a 2D solution instead of a 3D solution. However, the GPS fixes coming from the JF2 are indicated as 3D. I think that this 2D solution based process is the root cause of not providing the actual altitude in a dynamic vertical oriented trajectory.

It is also stated that another version of JF2 firmware is offered that provides a 3D solution. Can TinyCircuits provide this alternative JF2 firmware?

19
General Discussion / GPS TinyShield does not provide actual altitude
« on: July 20, 2020, 04:20:25 AM »
The Telit JF2 GPS on the GPS TinyShield showed not to be able to follow rapid changes in height.

Based on the example from the GPS TinyShield Tutorial I have made a data logger with a TinyZero Processor Board with accelerometer, a GPS TinyShield and a MicroSD TinyShield. This logger is primarily meant for model rocket applications.
Using two separate buffer memories GPS NMEA strings are recorded in a .txt file and accelerometer outputs, time stamps and other administrative data like buffer usage are recorded in a .csv file.

The NMEA GPS string set consists of GGA, GSA and VTG strings at 5 Hz and GSV strings (normally 3 strings) at 1 Hz.
The 5 Hz command for the Telit JF2 GPS  has been taken from the chapter ” Enable 5Hz Update NMEA” from “Telit_Jupiter_JF2_EVK_User_Manual_r0.pdf” found on internet:
"$PSRF103,00,6,00,0*23\r\n"

To enable sufficiently fast communication between Telit JF2 GPS and TinyZero the baud rate has been increased from 9600 to 19200 after first initialization of the Telit JF2. To set this baud rate at the Telit JF2 side I have used the NMEA command:
"$PSRF100,1,19200,8,1,0*38\r\n"

The functionality of this logger application has been tested under static and dynamic conditions, e.g. car trips. Overall, it works fine on standard, x-y trajectories.

A vertical oriented trajectory was tested using a medium sized low power model rocket, MER-75.
The data logger with the GPS was placed in a specially prepared payload bay in the nose cone of the model rocket. A 2nd data logger consisting of a TinyZero Processor Board, a Combo Sensor TinyShield and a MicroSD TinyShield was placed in another payload bay at the bottom of the model rocket between the model rocket motors. Accurate time synchronization of the logger recordings was done afterwards by matching the z-axis accelerations during the start ramp of the boost phase. This synchronization enables direct comparison of the altitude from the GPS TinyShield and the altitude from the barometric pressure sensor of the Combo Sensor TinyShield. Furthermore, a separate Altimeter 2 was included in the payload bay in the nose cone.

The trial was executed on July, 11 near Almere, The Netherlands, with a surface height of -6 m with respect to sea level. Readings of the Altimeter 2: Apogee: 94m, altitude at parachute ejection: 90 m above ground level.

The attached figure vertically shows the altitude (in m) derived  from the barometric pressure sensor and the GPS for the time interval including model rocket launch, boost phase, ballistic phase, parachute ejection etc up to soft landing. The horizontal axis shows the time in milliseconds.

The part of the barometric sensor altitude curve during rocket motor trust (between 2.2 and 4.0 s) is not correct because the rocket motor trust influences the pressure, but after 4 s, when the motors have burnt out, it is reliable.
The GPS altitude only shows a decent increase with small steps up to 17.5 m and starts decreasing again when the rocket on the parachute is at about 10 m above ground.

It is clear that the GPS is not losing track; latitude and longitude values are not strange.
The minimum number of satellites tracked varies from 8 to 10. All GGA messages during the shown time interval show a fix.

However, it is obvious that the GPS altitude is incorrect during the most interesting parts of the model rocket trajectory. It seems to me that a very slow filter is applied on altitude data inside the GPS .

From my point of view this incorrect GPS altitude is related to the Telit JF2 functionality.
My main question: How can I get perhaps more noisy, but actual GPS altitude output?

20
Just an additional remark.

It would be logical that other SAMD based processors than TinyZero could have given comparable wrong pressure and altitude results in case of negative BMP280 chip parameters.

For instance, for the problem described as ".The altimeter readings I get on the barometer are totally different on the TinyScreen+ and make no sense. "  in "Skydive Altimeter on TinyScreen and Tinyscreen+ ", see User Projects / Code examples September 17, 2018, this probably has been the main cause as the SAMD of the Tinyscreen+ also has 32 bit int.

So the recent update of BMP280.h and  BMP280.cpp should also solve this problem.

Willem

21
General Discussion / Re: TinyZero Problems
« on: May 04, 2020, 06:27:43 AM »
Hello John,

after several successful uploads to a TinyDuino I experienced big problems with upload to a TinyZero.

Looking for a solution to a completely different problem, i.e. reading out a modern digital recorder, I found that the USB channels of the computer platform I worked with are relatively slow.

After using another computer platform with faster (more modern) USB channels I have got no problems anymore with upload to TinyZero.

Did you check if the USB channel you use for upload is fast enough?

Willem

22
Hello Réna,

Many thanks for pushing the code fix.
The updated BMP280 Arduino Library now gives stable results for both TinyZero and TinyDuino with comparable output for two different shields with BMP280.
So issue has been solved.

Willem

23
Réna,

thanks for your reaction.
Herewith the code related to the first solution
(- changing the declaration of the signed parameters from int to short (in BMP280.h). In this case also readInt has to be adapted in BMP280.cpp and BMP280.h.)

In fact only three changes in total related to change of signed parameters, two in BMP280.h and one in BMP280.cpp.
See attachments.

It is perhaps cleaner to change the declaration of the unsigned parameters too, but not necessary, so I have not included it.

Willem

24
Reuse of a sketch with standard BMP280 library files BMP280.cpp and BMP280.h on a TinyZero with Combo Sensor TinyShield gave instable pressure and altitude measurements.
It turned out that reading of the compensation parameters (in BMP280.cpp) goes wrong for negative BMP280 chip parameters.
The BMP280 datasheet states that 10 of the 12 parameters have to be interpreted as signed short (so signed 16 bit).
However in BMP280.h the related variables are declared as int.
This works well for TinyDuino, but for TinyZero int is 32 bit. This means that in case of TinyZero the negative values are read as positive ones (between 32768 and 65535), leading to wrong compensations, e.g. to barometric pressure even outside the interval of 800 - 1200 mBar.

Different solutions are possible:
- changing the declaration of the signed parameters from int to short (in BMP280.h). In this case also readInt has to be adapted in BMP280.cpp and BMP280.h.
- logging the parameters and including these as constants in BMP280.cpp. The normal parameter reading process in BMP280.cpp has to be blocked.
- check the read (signed) parameters for values > 32767 and if true reduce with 65536. This is only useful for TinyZero.

I have checked the two first solutions and both are working properly with TinyZero (and also with TinyDuino).
My preference is the first solution because it is correcting the real error.
However, the second one provides additional insight in the parameters of different BMP280 chips.

I think it would be good to update the BMP280 Arduino Library to avoid problems with TinyZero.

Pages: 1 2
SMF spam blocked by CleanTalk