Posted by Paul Mather on November 2, 2009 at 4:32pm
In my testing trying to get the ArduPilot to work with Remzibi's OSD, I'm starting to notice that the serial output of the ArduPilot is intermittent at best. For the most part, I show the blue GPS lock led, but it does turn on and off for no reason on occasion.Has anyone studied the ArduPilot source enough to know how much additional processor power is consumed with the ArduShield connected? I have two ArduShields (both "old" ones) and neither will return more than about 3% of the GPS data being sent to it.I'm using my GPS Emulator at 38,400 and I've varied the Hz from 1 to 10 with no significant change in output. All of my testing is working absolutely fine without the ArduShield attached.Anyone got a guess?
The gps could run at 3.3 - maybe. But the serial is expected at 5v. That would put the signal at the threshold making it vulnerable to noise. I don't have the older shield to check.
Ok, the GPS I'm using is supposed to work from 3.3V to 5V. It doesn't matter where I connect it because the voltage is good at either. I'll have to see where the ground is missing.
It's one of the grounds on the main 5V GPS connector (EM406) that's not connected in the old shield. But if you're using the 3.3V pins with a 5V GPS, you're sure to have problems!
In the old board the ground are the first and the last pin of the 6 pins gps connector.
The 5th is not connected on the board.
In the new shield the first and the 5th are connected.
I made a cable with all three pins connected togheter.
Be careful because in the old shield it seems to be an error:
in the 4 pins 5v connector the "TX" pin should be "RX"!
On the new board they are all marked "IN"
Best regards.
board.in is for sale! | Don't miss this premium domain name - board.in !
board.in is for sale! | Grab this board.in Premium Domain to expanding your online business.
As far as I know, and I've taken Jordi's code apart line by line, is that the shield has no effect on the code or speed of execution. The code looks for the analog 3 pin and returns a value regardless if the shield is connected or not. What the shield does do is add electrical and mechanical complexity to the system. Noise and loose connections could cause the serial port to misread values from the GPS. A single number out of 90+ numbers could be read wrong causing the data to fail the checksum and be tossed. Look in the parsing code for the checksum and add a code block that prints "*** failed checksum ***"
Here is an example. Look for line 70 on GPS_EM406.pde
if(((gps_buffer[90]<<8)|gps_buffer[91]) == gps_checksum_verif) {
GPS_join_data(); //Joing the data
data_update_event|=0x01;
data_update_event|=0x02;
} else {
Serial.println("*** failed checksum ***");
}
Comments
The OSD runs on a 7805 - 5V regulator.
In the old board the ground are the first and the last pin of the 6 pins gps connector.
The 5th is not connected on the board.
In the new shield the first and the 5th are connected.
I made a cable with all three pins connected togheter.
Be careful because in the old shield it seems to be an error:
in the 4 pins 5v connector the "TX" pin should be "RX"!
On the new board they are all marked "IN"
Best regards.
I'm doing my testing with the inexpensive NMEA GPS that ships with Remzibi's OSD.
Chris, is it the 3.3V that's unconnected or the 5V?
Here is an example. Look for line 70 on GPS_EM406.pde
if(((gps_buffer[90]<<8)|gps_buffer[91]) == gps_checksum_verif) {
GPS_join_data(); //Joing the data
data_update_event|=0x01;
data_update_event|=0x02;
} else {
Serial.println("*** failed checksum ***");
}