Re switching speed is slow - I doubt a battery would care whether it is 1hz or 1khz. What will change are the volts - do you sample while in the middle of a fast pwm (average constant current), in a slow 'mark', or in a slow 'space'? I'm not sure I have the answer, but in one design I built it charged for 50 secs, then rested for 10 secs then measured the volts. But that wasted some potential charging time. The UC3906 senses while charging but I think it knows the charging current so it can compensate. And if you say "I'll measure the volts at a fixed charge current of 500mA" and it happens to be a dull day and the solar current never gets to 500mA, how do you ever measure the volts correctly? So you kind of get forced to measure the volts at zero charge current (and then how long is long enough to rest for before measuring?) , or you need a formula that relates volts, a random current and the charge state.
Some more questions I'm not sure about:
* If you drive pwm charge 1khz at a known battery voltage and known pulse width but an unknown solar voltage, can you work out the charge current? (I think no)
* If you drive a pwm charge 1khz known battery volts, known pulse width and known solar voltage, can you work out the charge current (I think yes, but am not sure of the maths)
* Is it better to run the electronics off the solar panel rather than the battery? (I keep changing my mind about this, currently I prefer running it off the solar panel (ie circuit is dead at night) as it saves 3mA discharge current overnight).
* Is it necessary to have a current sense resistor? (a battery will always read a higher voltage if it is being charged with a higher current, so how do you know when it is charged if you don't know the charge current)
* Is it better to switch off charge to a battery by disconnecting the solar panel (high side mosfet) or by shunting the solar panel (mosfet shorts solar panel with a big resistor)? (I used to go for disconnecting, but more recently I've gone for shunting as the extra heat helps drive moisture away from the electronics/board/box).
* Is it possible to detect the "real" charge of a battery expressed as a percentage? (I initially thought no which is why detecting the volts while charging was an inexact measure, but more recently I read that if a lead acid battery has settled for 8 hours then the volts will reflect the charge)
So regarding the latter, given that all solar systems will be off anyway at night, and given that will usually be 6-8 hours (unless one lives near the poles), and given a picaxe doesn't need to be running at night, that suggests a circuit where the picaxe is powered by the solar panel (ie before the reverse diode) and the first thing that happens when it comes on in the morning is it measures the battery volts (after first checking its own 5V - grr, yet another ADC input. 14M heading to 20M). It can then calculate the % full. If the picaxe knows the amp hours of the battery and it can measure the current, and it knows the percentage efficiency of the battery, it can deliver a certain number of amp hours to the battery to make it 100% without measuring the volts at all during charge. Or maybe measure them just to detect gross overcharge as a backup measure. This might lead to a slightly different design as it would have just one mosfet which would be on for some of the morning and then maybe switch off or switch to a balanced pwm where the solar charge just matched the load current.
Too many musings. And this is heading to an 18X with an LCD!
Just regarding the Eagle schematic, there are some unconnected components - led 2, D3 and D4 on post #49 but they are connected on post #46. Grab a little junction circle from the left side of the screen second to bottom symbol, left column. This can be a trap in Eagle - sometimes components don't connect up. If you get to making a board, when you grab each component to put it on the board, just ensure each component has all its stringy wires connected.