CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Old forum posts? and software filtering

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
dave



Joined: 21 Dec 2003
Posts: 7
Location: Sheffield, South Yorks, UK

View user's profile Send private message

Old forum posts? and software filtering
PostPosted: Sun Dec 21, 2003 3:41 am     Reply with quote

Have CCS now got rid of the old forum posts altogether??
I was searching for some older articles on software filtering I have a couple that Have been posted on here for mean and median filtering..
Basically what the problem is, I have developed an application for an overhead gantry crane which weighs train bins, now when the operator picks the bin up there is a little bit of bounce and swing, I am using an LTC1298 external a/d chip which is read via the #int_rtcc (using this as a selectable sampler via a key pad, ) so can set the sample rate to cause a reading of the 1298 via the interrupt at say 1,5,10,15,20,50,100,200 mS,
all I'm trying to do is to smooth out the readings....I am using an 18f452 by the way, the signal from the loadcell goes through a loadcell amplifier, then another amplifier on the instrument PCB, there is plenty of hardware filtering in the loadcell amplifier, on the instrument PCB I have desgined the LTC1298 is sat next to the PIC literally to keep down the possibility of onboard noise and the amplifier is sat next to the 1298 again for same reasons, so its just a case of when the gantry crane is moving or has lifted the weight .


Cheers dave.
Ttelmah
Guest







Re: Old forum posts? and software filtering
PostPosted: Sun Dec 21, 2003 4:34 am     Reply with quote

dave wrote:
Have CCS now got rid of the old forum posts altogether??
I was searching for some older articles on software filtering I have a couple that Have been posted on here for mean and median filtering..
Basically what the problem is, I have developed an application for an overhead gantry crane which weighs train bins, now when the operator picks the bin up there is a little bit of bounce and swing, I am using an LTC1298 external a/d chip which is read via the #int_rtcc (using this as a selectable sampler via a key pad, ) so can set the sample rate to cause a reading of the 1298 via the interrupt at say 1,5,10,15,20,50,100,200 mS,
all I'm trying to do is to smooth out the readings....I am using an 18f452 by the way, the signal from the loadcell goes through a loadcell amplifier, then another amplifier on the instrument PCB, there is plenty of hardware filtering in the loadcell amplifier, on the instrument PCB I have desgined the LTC1298 is sat next to the PIC literally to keep down the possibility of onboard noise and the amplifier is sat next to the 1298 again for same reasons, so its just a case of when the gantry crane is moving or has lifted the weight .


Cheers dave.

The posts largely exist, but can be fun to find, unless you know the subject.
The easiest filter is:

int16 filter(int16 value) {
static int16 forward;
int16 rval;
forward=forward+value;
rval=forward/X;
forward=forward-rval;
return rval;
}

Now you can change the damping amount, by altering 'X'. There are some 'caveats':
Assuming the incoming value is (say) a 10bit value, then the maximum value of 'X' that can be used, is 64, or you need to switch to using 32bit values/arithmetic.
As shown, the division will take a reasonable time. The system can be speeded up massively, by using a shift, rather than a division (so, 'rval=forward>>4' for example). Using a shift like this only works is the numbers are unsigned.
You can also use the approach of doing the division before the addition (if in floating point, or working with the number 'scaled up', before the arithmetic). The advantage of this, is that you can change the factor 'on the fly', increasing the damping for small changes, and reducing it when there is a sudden shift (or vice versa).

Best Wishes
Tom-H-PIC



Joined: 08 Sep 2003
Posts: 105
Location: New Castle, DE

View user's profile Send private message

This is vary interesting please explain more!
PostPosted: Sun Dec 21, 2003 8:37 am     Reply with quote

Hello Ttelmah
I understand the division but I don’t understand “forward or rval”
Is this the same as reading the adc a number of time and adding them all up and dividing by the number of reads?

Tom
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Sun Dec 21, 2003 11:45 am     Reply with quote

Quote:
Have CCS now got rid of the old forum posts altogether ?

The posts are there, but when the old forum was appended onto the
new forum, the links that were in many of the old posts were not
updated to point to the new forum.

If you click on a link to an old post and it comes up as a dead link,
then do a search for the post number. For example, here's a
link to the old forum:
http://www.pic-c.com/forum/general/posts/13211.html
But it's a dead link, because the old forum was taken down.
So do a search in this new forum for the post number: 13211
Then you'll find the post:
http://www.ccsinfo.com/forum/viewtopic.php?t=3462
-----------------------------

The reason why a median is better in some applications is because
it can remove data samples from the filtered output, that are grossly
incorrect. For example, suppose you have a handheld tachometer
project. It uses a photocell or other sensor to detect the motion
of a moving object. Sometimes, the user will not aim the tachometer
properly at the moving object. So the tach might not detect one of
the events. Then the waveform coming into your CCP (on the PIC)
will have a missing pulse. The period calculated will be twice as long
as it should be. Also, due to noise, you might somehow get an extra
pulse coming into your CCP. Then you'll get a very short duration
pulse added to your data stream.

If we just use an ordinary filter, all these bad data points will get added
to the output. This is unacceptable for a handheld tachometer.
We'd rather just skip the bad data points and only display the average
of the good ones. A median filter will do this for us.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group