Testing three types of gun powder scales

I tested three types of scales to see how they compare against each other. I don't know the actual weight of gun powder, so I can't comment on the absolute value of the measurements.

The three scales are swing type Lee safety powder scale (approx. $30), swing type RCBS model 505 magnetic powder scale (approx $90) and a digital Hornady CS-1500 scale (approx. $40).

I tested only one weight, as it took me more than an hours to acquire 33 measurements. The procedure of weighing was as follows. I used a Dillon RL 550 B reloading press to auto-load a charge of VihtaVuori N340 gun powder into a .357 Magnum case. I then poured the gun powder to one of three scales. After reading the weight, I poured the same gun powder to the second and then to third scale, never in the same order (I dare not say randomly, but close enough), reading the weight each time. After the measurement, I returned the gun powder to the automatic dispenser. All measurements were read to 0.1 grain.

This charge was chosen for this exercise only. I do not take any responsibility if you reload with this charge. Always consult your reloading resources for a propper low/high charge weight.

library(ggplot2)
library(reshape2)
w <- read.table("./data/compare_scales.csv", sep = ";", header = TRUE, dec = ",")

The data are prepared so that the first column charge represents the (same weight) charge load from the press, and the other three columns are, row-wise, measurements of the same charge by three different scales. All points are “jittered” left and right on the horizontal axis to make overlapping measurements visible.

w
##    charge lee rcbs hornady
## 1       1 7.0  7.0     6.9
## 2       2 7.0  7.1     6.9
## 3       3 7.1  7.1     7.0
## 4       4 7.1  7.1     7.0
## 5       5 7.0  7.0     6.9
## 6       6 6.9  7.0     7.0
## 7       7 7.1  7.1     7.1
## 8       8 7.0  7.0     6.9
## 9       9 7.0  7.0     7.1
## 10     10 6.9  7.0     7.0
## 11     11 7.0  7.0     7.0

The below image shows the 33 data points. \( x \) axis shows consecutive charges, which should be comparable, \( y \) axis shows the weight of each measurement. Colors designate different scales.

wm <- melt(w, id.vars = "charge")

ggplot(wm, aes(x = charge, y = value, colour = variable)) +
  theme_bw() +
  ylab("Weight [gr]") +
  scale_colour_discrete(name = "Scale type") +
  scale_x_continuous(breaks = seq(from = 1, to = nrow(w)), labels = seq(from = 1, to = nrow(w))) +
  geom_jitter(position = position_jitter(width = 0.2, height = 0), size = 4)

plot of chunk unnamed-chunk-4

Notice that current charge is about 7 grains ± 0.1 grain. Based on the limited number of measurements, it's hard to say that one scale performs differently. Values from RCBS scale are generally very slightly higher (as seen by the average, see below).

On average, Hornady scale reads lowest, RCBS highest and Lee is somewhere in the middle. The range of mean values is 0.0545 which is below the usual precision we go for (correct me if I'm wrong).

aggregate(value ~ variable, data = wm, FUN = mean)
##   variable value
## 1      lee 7.009
## 2     rcbs 7.036
## 3  hornady 6.982

Let's formally test if there's any difference between scales .

summary(mdl <- aov(value ~ variable * charge, data = wm))
##                 Df Sum Sq Mean Sq F value Pr(>F)  
## variable         2 0.0164 0.00818    2.08  0.144  
## charge           1 0.0005 0.00048    0.12  0.728  
## variable:charge  2 0.0242 0.01212    3.08  0.062 .
## Residuals       27 0.1062 0.00393                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Notice that there is no statistical difference (\( p \) value, the \( Pr(>F) \) column, is relatively large) between different scales (in general), different charge runs or their interaction (which means difference in scales per each charge).

For practical purposes, consistency between scales is in my opinion sufficient. I'm also satisfied with my automatic gun powder measurer, it doses “only” ±0.1 gr to the set charge.

Next project would be to measure the absolute deviation from true weight. This would put all three scale en par their value in money.

If you have comments, suggestions or you'd like to share your enthusiasm about reloading, feel free to leave a comment.

Supplementary material

Some of the model diagnostics:

par(mfrow = c(2, 2))
plot(mdl)

plot of chunk unnamed-chunk-7