Make low cost 3D printed sensors

Recently, advanced conductive materials have been presented for the 3D printing of electrical circuits. These new types of materials have extended the possibilities of 3D printing. A low-cost conductive filament with high resistivity can be used for various low-voltage applications such as force/pressure sensors. When pressure is applied, the contact area between the two conductive materials is increasing and the total resistance is decreasing (Fig 1).

 

 

Figure 1. The structure of the sensor.

The simplest circuit for the measurement of the voltage output is illustrated in Figure 2 and 3. This connection called as a voltage divider. In this circuit, a 10 kOhms resistor was used.

Figure 2. Voltage divider.

Figure 3. Circuit connection

 

Below you can find download links for the STL files of the sensors for a 3D printer with a dual or single extruder (Fig. 4 & 5). Using a single extruder, each printed layer should be glued.

Figure 4. 3D printed pressure sensor with a dual extruder.

Figure 5. 3D printed pressure sensor with a single extruder.


To test the pressure sensor, a calibrator was developed (Fig. 6). STLs of the calibrator are also included at the end of this post.

 

Figure 6. The structure of the calibrator.

 

Applying 5 weights (each one was 1 kg) in a pressure sensor printed with a dual extruder, the measurements were extracted (Fig. 7).

 

Figure 7. Applying 5 weights.

The results are not linear, they follow an inverse exponential attitude. In higher values, more force is needed for less change of voltage. Every printed sensor does not present the same behaviour, the voltage output could be different for each one. However, the produced 3D printed pressure/force sensors have similar behaviour with commercial Force Sensitive Resistors (FSRs) sensors and with minimum cost; each one is estimated in a few cents.

Code (Output voltage):

float reading = 0;
int dt = 20; 
unsigned long t=0;    

void setup() {
Serial.begin(115200);
}

void loop() 
{
t=millis(); 
 reading = analogRead(0);

 Serial.println(reading*(5.0/1023));


while((millis()-t) < dt) // Making sure the cycle time is equal to dt
  { 
  // Do nothing
  }

}

 

One way to calibrate the sensor is by applying weights and recording the output voltages. After, using interpolation the relative weight or force can be estimated. More weights yield better accuracy. Calibrator code can be downloaded at the end of the post. The code is based on repetitive procedure asking a weight and calculating the average voltage. Finally, a smoother could be employed for better results.

 

Components:
Modules:
(1x) Arduino Uno
(2x) 50cm Double-ended Crocodile Clips Cable Alligator Clips
(1x) Resistors
Force sensors:
(1x) Conductive filament
(1x) PLA filament
Calibrator:
(1x) PLA filament
(3x20cm) 10mm Threated rods
(18x) 10mm nuts
(1x20cm) 18mm tube 
(6x) 3mm bolts
(6x) 3mm nuts
(2x) 4mm bolts
(2x) 4mm nuts
Download Designs: Link
Download Code (Calibrator): Link


RECENT POSTS