How fast we goes..

 Arduino, CNC, Jeti  Comments Off on How fast we goes..
Jul 142020
 

Finally got the airspeed sensors, so what better to do on a rainy afternoon them to play with them? First the specs: Datasheet, and a picture. Bear in mind that all these diy chips are basically old stuff. This one dates from 2012. Obviously nothing wrong with them, they are still used in a lot of equipment, but they are not the smallest of parts! However, this makes it so easy for us diy-ers to play with them.

which tube goes where.

The metal probe weighs approx 10 gram, with electronics, housing etc, ca 40 gram. (too much cabling, and unwanted plastic). I don’t want to stick that on the tail of a glider yet. I’ll use that on the wingtip of the Carden. ( I think, maybe, or something). Easiest for testing is to connect the sensor to the input of my JetiBox. (I think this can be done) and stick it on the car. We’ll see where this goes.

Some how the Jetibox only displays 14 sensors, (supposed to be 16) and most of them are for the GPS that is not present and disabled. I guess I have to ‘fix’ the software for this. Can’t think of another way at the moment.

The sensors-information must be stored along with the Rx identity in the JetiBox. (Not in the transmitter, in the JetiboxProfi box thingy.) Good project for another rainy-day, because I suggested to one of our BigGlider guys that I could use this to monitor ‘from the side’ if and when he has signal dropouts. I can do it at the moment, but I would still like to see the airspeed at the same time. That was the idea behind the stand-alone system. Stick it on anything, and monitor from Jetibox. Actually, with all the sensors on board you could monitor lots of things, without having to interfere with the electronics of the plane. (Fokker-E3 rings a bell, what speed is it really moving, and would it not be nice for it to complain when things are getting dicey. Just a thought…)

sort of prototype, just enough to keep things in place

Wingtip? If I add a small 2s 150mAh lipo it will be a completely self contained, stand-alone unit, that is connected to the DS-14. Weight is easily added to the opposite tip to balance things. That, or stick it an the rudder, the Carden won’t mind so much. Much fun to be had!!

And in the meantime, our friends delivered a bunch of cutters for the CNC-machine and some parts for making a mist-cooling system. As always, the general idea is present, the execution is still to be puzzled out. Where do I put stuff?? On the router head so it moves along with stuff I cut, (wishful thinking) , or nail it to the bottom and for the few small parts I have to make it is ok to simply spray enough the centre of the part. And I need some cutting fluid. Look for local cutting fluid, and start doing it!

today’s harvest done

 Arduino, Jeti  Comments Off on today’s harvest done
Jul 102020
 

This series has an extra voltage regulator, I have a feeling the version that runs straight on the 5V from the receiver is a bit too sensitive to voltage fluctuations. These ones are to be fed from a 2S Lipo or LiFe supply.

Time will tell if I am right ;-

1012 mBar in the shed.

 Arduino, Jeti  Comments Off on 1012 mBar in the shed.
Jul 102020
 

Continuing with the Barometric Pressure Sensor saga. Here are the data sheets for the MS5611, and the MS5607.

The parts that show the different methods for calculating pressure and temperature are highlighted in the images.

MS5611
MS5607

Use the linked datasheets if you can’t read the fine print.

M5611
MS5607

Crudely changing the code at least gives me good results now! Next is trying to merge this in the VarioGPS code. One way to do it is to use the chip-select bit to determine which chip.

I2C INTERFACE COMMANDS Each I2C communication message starts with the start condition and it is ended with the stop condition. The MS5607-02BA address is 111011Cx, where C is the complementary value of the pin CSB.

Pulling it high will give an address of 0x76, (normally pulled to zero by 2k2, gives it a 0x77 address.) VarioGPS already uses this trick to identify another chips. I might ‘simply’ put the MS5607 in that slot, since I don’t have that chip.

Memory is already tight, so I removed both the LPS and BMP280/BME280 sensors. That gives me enough room to play and get the code inserted and cleaned up. I can always stick it in later when/if things are working.

RAM:   [=====     ]  50.5% (used 1034 bytes from 2048 bytes)
Flash: [========= ]  91.6% (used 28144 bytes from 30720 bytes)

 Posted by at 7:00 am

Altitude and Vario’s

 Arduino, Jeti  Comments Off on Altitude and Vario’s
Jul 082020
 

I received some chips last week, they are to be used in a VarioGPS unit for Jeti. I’ve build around a dozen of these things now, and so far I have had no real issues. So what happened?

As always with stuff from ‘the east’ you never know what you get. But I am jumping ahead.

With a fresh cup of coffee and a hot soldering iron, fun is to be had. First load the firmware on the Arduino-Nano. Yup, done that a million times. Only this time my usb cable is bad. Ah well, after last weeks mains cable to the router spindle, what is to be expected? Somebody trying to keep me on my toes? Anyway, carrying on regardless. Code loaded, and the first one assembled. No GPS reading? And the air pressure is only 507 hPa? (Exactly half what it has to be.)

Ok, back to basics. Of the 10 GPS modules (them expensive ones) 9 are good, the one I used is bad (for now, maybe I can revive it).

But that altitude problem turns out to be a Real Good one!

The Barometric Pressure Sensor chips that are mounted on the GY-63, as these boards are called, is normally a MS5611. (I used this link for reference, this is NOT where I got mine!!) Everybody uses them, no problems ever reported. They have a resolution of 10cm.

When I finally was able (with 3 magnifying glasses stacked) to read what was on the chip, it said: MS560702BA03. I received MS5607’s that are advertised as MS5611, but obviously they are not!

They are the predecessor of the MS5611, and an obsolete part. And the Big, Really Real Big Problem is, that they have half the resolution. (20 cm). Now, resolution would not necessarily be an issue. Range is the same, all other specs are the same, the code according to the manufacturer is the same.

Looking at many available (Arduino) libraries, you only see the occasional statement that the library is MS56xx compatible, meaning good for both MS5611 and MS5607 (and others).

So, what next? As always I am a sucker for getting to the bottom of the problem, and a $5.00 chip ain’t getting the better of me. But it is annoying to pay for a premium part and get a shitty one. We’ll see what our friends say about it.

My solution for the time being, is to change the code! (What else?)

// code from the manufacturers application note
// https://www.amsys-sensor.com/downloads/notes/MS5XXX-C-code-example-for-MS56xx-MS57xx-MS58xx-AMSYS-an520e.pdf
This bit is from the application note. 
D2 = cmd-adc (CMD_ADC_D2_CMD_ADC4096); //read D2
D1 = cmd-adc (CMD_ADC_D1_CMD_ADC4096); // read d1
dT=D2-C[5]*pow(2,8); // D2-C[5] * 256 
OFF= C[2]*pow(2,17)+dT[4]/pow(2,6); 
SENS=C[1]*pow(2,16)+dT*C[3]/pow(2,7);
T=(2000+(dt*C[6])/pow(2,23))/100;   P=(((D1*SENS)/pow(2,21)-OFF)/pow(2,15))/100; 

The code below is used in the MS5611 library, file MS5611.cpp
*/
{   uint32_t D1 = readRawPressure();
    uint32_t D2 = readRawTemperature();
    int32_t dT = D2 - (uint32_t)fc[4] * 256;  
    int64_t OFF = (int64_t)fc[1] * 65536 + (int64_t)fc[3] * dT / 128;
    int64_t SENS = (int64_t)fc[0] * 32768 + (int64_t)fc[2] * dT / 256;

    if (compensation)
    { int32_t TEMP = 2000 + ((int64_t) dT * fc[5]) / 8388608;
	OFF2 = 0;
	SENS2 = 0;
	if (TEMP < 2000)
	{   OFF2 = 5 * ((TEMP - 2000) * (TEMP - 2000)) / 2;
	    SENS2 = 5 * ((TEMP - 2000) * (TEMP - 2000)) / 4;
	}
	if (TEMP < -1500)
	{  OFF2 = OFF2 + 7 * ((TEMP + 1500) * (TEMP + 1500));
	   SENS2 = SENS2 + 11 * ((TEMP + 1500) * (TEMP + 1500)) / 2;
	}

	OFF = OFF - OFF2;
	SENS = SENS - SENS2;
    }
//uint32_t P = (D1 * SENS / 2097152 - OFF) / 32768; // 507 hPa, readout is exactly half what I expect.

uint32_t P = (D1 * SENS / 2097152 - OFF) / 16384; // 
return P;
}
/* Fudging the result for now by dividing the last line by 16k instead of 32k fixes the result, but not the cause. 

It’s bad, it’s fixing a hardware problem with a software fudge. But hey, it kept me busy for a few evenings, and that braincell certainly got a tune-up!

The recipe for calculating the pressure.

My RPM meter for the spindle? working really good. And surprisingly accurate and stable. RPM’s on the Kress 800 are from 10000 to just a shade under 29000. I even printed a box for it, so that the fingers do not get in the way of sharp things. Since usually it is a mess near the spindle, with all kinds of stuff flying around, I decided to keep it as a separate unit. If I need to set a RPM, I can do so easily before cutting. And yeah, I ordered better cutting bits. By the time I have all this finished I could have shaped 100 parts by hand, but there’s no fun in that 😉

Yeah, the spindle problem: turned out the the constant flexing of the mains cable killed the cable. Took 10 years, so I’m not complaining. All is happy again, and the spindle even sounds better. Which probably leads me to another project: Do I upgrade the Router to modern electronics/software or carry on as is? Will it make life easier? Will it make coffee? (Just in case I run out of things to do, one needs to have things lined up!)

update @ 2200: found the differences between the sensors. Testing next..