Show Posts
Pages: [1]
1  Forum 2005-2010 (read only) / Forum / Hi! on: December 01, 2010, 04:22:41 pm
Hi everyone,

I'm new to here. Is there a welcome page to let newbies post their first post?
2  Forum 2005-2010 (read only) / Interfacing / Re: Possible Ways to Run Health Checks for Arduino on: January 02, 2011, 06:27:53 pm
Above all, everyone thank you so much for replying so much extremely helpful and informative information to me. I'm just an undergraduate student in ECE, my knowledge and experience are very limited compared to any of you, but with your help there is nothing that can't be solved!

For the redundancy system itself, it is specified by th scope of this project. I'm actually already aware the fact that there weren't many people integrated redundancy system into their successful near space balloons, this may means redundancy system is not very necessary in an armature balloon system (people even launched and recovered iPhone or Android phones successfully lol). However, since the redundancy is part of our project scope, I just treat it as one of challenges we need to solve.

So far, I have two basic design concepts:

1. Partially mimicking the redundancy system on autopilot for aircrafts, which runs 3 controllers simultaneously. All the outputs from the 3 controllers are compared and the most different output will be ignored. For example, when the ambient temperature is -60 outside the balloon, Arduino A reads -60, B reads -58, C reads -10, the result from C will be ignored. But there are two problems, one is that I'm not sure if this can be done without microcontrollers (might be at least as complicated as Arduino itself); another one is that how can I make sure that the program flow on the 3 Arduinos are the same? For example, if Arduino A wants to save temperature data to the SD card, while B wants to save GPS coordinates?

2. All three Arduinos are connected to the avionic identically, but we runn one Arduino at a time, the Arduino is monitored by a dedicated watchdog circuit externally. When Arduino A can't respond to the WDT's pull fast enough, WDT will reset this Arduino. If reset still can't make it go faster, this Arduino will be turned off by turning off the MOSFET connected to Vin pin of it, and then turn on Arduino B, etc. There are two problems in this scenario. First, even if an Arduino can respond to WDT fast enough, does this necessarily mean that this Arduino is all good? Second, how to do the "turn off & turn on" switching using WDT circuit?

The following are some questions and ideas from reading the posts. My knowledge is merely undergrade level and I'm learning from you guys every day, so my questions may be stupid, please bear with me smiley

To retrolefty:
The AVR chips do have such an internal WDT and may or may not be useful for what you are looking for. I kind of like external hardware WDT, where all the processors have to continously send a sanity pulse out and if external logic circuitry detects a processor not alive, just switches to the redundant processor.
I fully agree with you. Using internal WDT is pointless if the controller itself is not responding. But how can I "switch" once a controller is determined dead?

To mrmeval:
Standard microcontroller watchdog integrated circuits will read a pulse from the microcontroller and this resets the watchdog counter to zero. You can do that with a dedicated circuit or if you need some repeatability and precision I'd do it with a microcontroller
The point of having redundancy is because theoretically more complicated microcontrollers have higher failure rate than simple passive components such as logic gates (I think?). The bottom line is, the redundancy system cannot fail, otherwise the entire system will be messed up and the equipments will be gone forever.

You'd want an external watchdog on it to reboot it if needed. I'd be tempted to use an ATTINY as a watchdog rather than the available dedicated watchdog integrated circuits.
Isn't ATTINY for onboard debugging?

I've worked with the Dallas external watchdog integrated circuit. DS1232. I can't spit on it hard enough to kill the engineer that built this piece of *t.  It has no consistency across temperature, it has no consistency between parts and if you get one batch to work the next batch you buy might not.
OMG man you almost saved my butt. I was looking right on this chip! Its descriptions are so attracting. But upon what you've said, I'm not going with it. Now I'm thinking about another chip from Maxim, what do you think?

To Richard Crowley:
My gut feel is that attempting to deploy redundant systems, plus implementing some kind of cross-check/voting mechanism will quite possibly make your system LESS reliable unless you are doing graduate-level research on those topics. In which case coming here for advice seems odd.
That's why the redundancy system needs to be as simple as possible. The redundancy system is required by the scope of the project which I can't change, although I personally agree that it is not seemingly necessary at all. I'm still an undergrade student with knowledge of a monkey on circuit designing and interfacing, but with your help, I'm growing fast smiley

To Coding Badly:
My suspicion is the battery is much more vulnerable than the AVR processor.
That's right. In order to counter this, I have put thick layers of insulation around the batteries. The choice of batteries are Energizer L91, those Li primary cells suppose to remain an acceptable state of charge at low temperature. Also, phase change materials may be used to hold the temperature further.

To Groove:
Why three identically-programmed devices?
The reason for using three identically programmed controllers is because we need to switch from one controller to another (as in scenario 2), the system behavior can be constant.

To tkbyd:
After years of seeing discussions about fighting heat buildup in electronics, I was amused to read of people who are fighting a situation where there isn't enough heat! (I presume they are further frustrated by having heat buildup problems while the balloon is still near the ground?)

Hummm, that's a great point! We are in Winnipeg in Canada, a city can get to -40 C in the winter, and pretty much we are going to launch our balloon during February - the coldest month of a year. Is getting hot still an issue then? I'm trying my best to wrap around the avionics to make it loss heat slower in near space. But according to what you said, I need to "vent" the heat?

To AltairLabs:
Your reply is extremely informative to me. It is my honor to know anybody has actually launched balloon before! By saying "take control", I meant to turn the malfunctioning controller off and the back up controller on. Because the code in each controller is the same and it is purely conditional, it shouldn't matter if we switch from controller A to B, the system behavior should remain the same.

I think I need to read more to absorb your words better. I will reply to you more thoroughly once I have done more research on your points.

Once again, thank all of you who had left ideas to me. You guys are truly amazing!
3  Forum 2005-2010 (read only) / Interfacing / Possible Ways to Run Health Checks for Arduino on: December 31, 2010, 12:09:03 pm
Hi guys. I'm currently working on a redundancy switching mechanism for the avionics part of our near space balloon project. The basic idea is, because the entire system will be sent to the near space (where the temperature drops below -60 Celsius, 1% ambient pressure compared to sea level, and with high exposure to cosmic rays), we need to make sure that our system has maximum survivability if things go wrong under such harsh condition. Alike redundant avionics in airplanes, we want to have 3 Arduino nanos that programed identically on board. In order to preserve the battery, the control of the entire system is handled by one Arduino at a time, i.e. Arduino A is in control, Arduino B & C are power off. If A fails (failure refers to complete or temporary death of an Arduino. Miscalculation or flip of bits due to cosmic rays and such is tolerable), Arduino B will be powered on, the control right will be switched to B in software, and then power off Arduino A. Switch to C if B fails, etc.

So I run into a problem that I have no idea how to comprehensively check the health condition of an Arduino board (in turn Atmega 328 chip). Should it be done in software on each Arduino itself or by a separate circuit? Is there a chip or some kinda circuit that handles health check for another microcontroller that I can interface it with Arduinos? Really, all we need to do is to be able to tell if one Arduino is dead so that we can switch to another redundant one.

One thing to notice is that the redundancy switching system should be as simple as possible, at least shouldn't be more complicated than each Arduino, otherwise the redundancy system will be more vulnerable to failure than Arduino and the whole point of having it is lost. So I think the redundancy system shouldn't involve any microcontrollers (maybe slower controllers are considerable?).

I've heard some ideas about how someones handle their redundancy switching mechanisms, which is like a voting system based on logic gates. But I'm not sure how that works. What signal will be sent to the gates? Pulling voltages? By just pulling and sending voltage from a microcontrollers, does it always tell you the health condition necessarily?
4  Forum 2005-2010 (read only) / Interfacing / Re: Interfacing with Garmin GPS18x LVC on: December 03, 2010, 01:37:11 am
A cursory browse through the PDF document shows that the LVC version has only TTL (5V) logic inputs and outputs. Connecting it directly to the +/-12V RS-232 port on a PC may have already toasted it.  

Hi Richard, thank you so much for replying my question! I have read that part. However, according to online discussion at ( and (, people saying that Garmin GPS 18x LVC uses actually RS-232 protocol not TTL standard. With this conflict, the data sheet was seemed confusing to me too.

So back to the question, in terms of power consumption and configuration (except for the fact that MAX232 uses bigger capacitors than MAX202), MAX202 is equivalent to MAX232, is this right?
5  Forum 2005-2010 (read only) / Interfacing / Interfacing with Garmin GPS18x LVC on: December 01, 2010, 04:22:48 pm
Hi guys,

I'm currently working on a school project (near space gas balloon with altitude control mechanisms), which requires connecting a GPS sensor onto the control system built around Arduinos. From other people's recommendations as well as my good experiences with Garmin, I bought a Garmin GPS18x LVC ( The GPS unit itself looks pretty cool, however with my beginner level on electronics, I'm having three major problems now:

1. According to online document (, GPS18 series sensor need to be updated to the newest firware (3.3 for now) in order to operate at above 60k ft altitude (this project will go that high). So I'm trying to connect the GPS to PC by soldering its wires into a DB-9 connector using the instruction on page 8 of its data sheet(why do they left the yellow cable that handles PPS open?). But the PC has no response after I connect the GPS unit onto it. I have the corresponding Garmin program installed on the PC though. I have no experience working with serial port on PC. Does anyone know what is going on?

2. For the requirement of this project, all the information we need to receive from this GPS sensor are just current time, current location, current speed, and current altitude. So for that, I think we just need to read $GPGGA sentences from the GPS. Am I right?

3. For connecting GPS18x LVC onto Arduino, because GPS18x uses RS-232 protocal, I think I need to convert this into TTL for Arduino using a MAX202 chip(I can only find MAX202 at school, but I mostly hear people using MAX232, is this ok?). After I have done that, can I directly connect the GPS in the same way as in this tutorial[ch65288][ch65289]?

That are all my questions so far. I'm still a rookie on Arduino and welling to learn as much from you guys as I can. Let me appreciate in advance for any kinda help!
Pages: [1]