I need a slow ramping analogue voltage, say 0 to 5 volts over a selectable period of say 30mins to 3 hours. The voltage should rise linearly with time so I don't want to use a CR charge curve. Also I want to avoid using a PIC. Any ideas?
You can get some of the way there using an op amp linear ramp circuit - see e.g. National Semiconductor TL081 datasheet, long time integrator application. They don't quote performance figures.
To get out to the times you want with decent linearity, you'll probably need to go to a counter/DAC (which is what a PIC would do inside - but you could do it the hard way!). Alternatively, one of the PC I/O cards with an analogue output would do it. I think I've also seen USB boxes with analogue outputs you could use.
__________________
"Love justice, you who rule the world" - Dante Alighieri
Yeah, to do this with analog you are going to need a very high quality op-amp. The TL081 may be ok, as I recall it is an FET input amp and you will need a very high input impedance amp. If the '81 doesn't work out investigate an electrometer type op-amp as they are designed for very high impedance applications. You are basically implementing an integrator and what it does is regulate the current into the node. You will also need a very low leakage capacitor such as a film type with polystyrene being one of the lowest leakage but more expensive too. Good luck!
__________________
The hardest thing to overcome, is not knowing that you don't know.
If the capacitor you chose is 1 uF, the max voltage is 5V, and the ramp time is 3 hrs, you'll need a constant current of 0.463 nA. A buffering FET opamp input impedance of 10^10 will be too low, and any capacitor leakage just makes things worse. The effect of opamp/capacitor leakage is to make the ramp more RC-like, and it looks like you are pushing the limit of reasonable cost and aggravation. Sounds like another approach is in order. Can the ramp "step" if each step is small enough ? (you quantum guys need not comment). a 16 bit counter/D-A converter would make each step 76 uV. Would that be small enough ? A clock rate of 6 Hz would take about 3 hrs to count through all 65K steps.
"a 16 bit counter/D-A converter would make each step 76 uV. Would that be small enough ? A clock rate of 6 Hz would take about 3 hrs to count through all 65K steps."
This is an approach I have used in the past - use a digital up-counter driving a D-A converter. By varying the frequency at which the counter is clocked you can change the rate of voltage rise. Using this technique you can have as long a period as you want - days or even months. It uses more parts than a simple integrator, but will definitely work.
But - if it were my project, I would definitely base it on a microcontroller! Not necessarily a PIC - I like the Atmel AVR series.
The approach would be to drive a D-A converter from, say, 16 of the output pins. The software would be pretty straightforward. The clock driving the counter would be derived from the crystal oscillator and thus the ramp speed could be very accurate.
AVR!!!, one chip solution, use PWM output on the 16 bit counter. If you want finer resolution use two or even three PWM channels at differnt frequencies, then sum them with a resistor network and an Op amp (that would require another chip). Don't be afraid of microcontrollers.
Someone should really ask what is this for, why do you want to do this?
I'm right on board with the jubba. PWM output is the best, but if you just output it to a simple r-c filter, you would have a fairly clean signal. For voltage stiffness of a small load, you could use an op-amp with unity feedback.
Of course, we DO have to ask what its for. Do you care if it's 30 minutes or 3 hours? How accurate does it have to be? With this solution, you could be as accurate as the clock source.
Sounds like a digital-to-analog (DAC) approach is ideal. There'd be excellent linearity, and assuming a full range span of, say, 300mm, a 10 bit DAC (scaled for 5V out at a count of 1000) would give 0.3mm steps.
__________________
"Love justice, you who rule the world" - Dante Alighieri
Here's a two chip version. Use an ADuC7020 (5x5mm single chip ARM7 processor w/ 12 bit A-D, and 4 x 12 bit D-A) of similar of the series. Sum two of the 12 bit D-A's into an amp (use different scaling for each) for an effective 24 bit resolution. The ADuC is a 3.3 V part so run the amp on 5 or whatever to get the range. Put dip switches or pots on the chip for control or use the usart to communicate with a serial device. Of course you might not get an effective 300nV resolution but with a good amp you can get close and probably afford to throw away some bits.
__________________
The hardest thing to overcome, is not knowing that you don't know.