This is an old revision of the document!


Table of Contents

 

Jõuandur

Tõlgitud, keele“edit” teha.

Vajalikud teadmised: [HW] Andurite moodul, [HW] Kasutajaliidese moodul, [AVR] Analoog-digitaalmuundur, [LIB] Analoog-digitaalmuundur, [LIB] Graafiline LCD, [LIB] Andurid

Teooria

Jõust sõltuv takisti
Jõust sõltuva takisti kihid

FSR (force-sensing resistor) e jõust sõltuv takisti on andur, millega on võimalik mõõta rõhumisjõudu, pigistamist või kaalu. FSR on põhimõtteliselt takisti, mille takistus sõltub sellest, kui tugevasti seda kokku vajutada. Andurid on suhteliselt odavad ja lihtsasti kasutatavad kuid on ebatäpsed. See tähendab, et anduriga ei ole võimalik mõõta absoluutseid väärtuseid vaid tuleks lugeda suhtelisi suuruseid. Nagu kõikide takistuslike anduritega piisav anduri lugemiseks lihtsast pingejaguri skeemist. Kuigi FSR on hea löögikindlusega võib see kahjustuda, kui sellele avaldada jõudu väga pikka aega.

FSR koosneb juhtivast polümerist, mis muudab oma takistust vastavalt sellele avaldatud rõhumisjõule. Seda toodetakse tavaliselt kas polümerkihina või prinditava “tindina”. Mõõteelement koosneb nii elektrit juhtivatest kui -mittejuhtivatest osakestest, mis on paigutatud maatriksisse. Vajutades polümerile muutub elektrit juhtivate osakeste asukoht, need puutuvad rohkem kokku ja seeläbi materjali takistus muutub.

FSR andureid kasutatakse tavaliselt vajutustugevust mõõtvates nuppudes ning näiteks muusikainstrumentides, autoistmetes (istuva inimese tuvastamiseks) ja robootikas.

Praktika

Jõu-juhtivuse graafik
Pingejaguri skeem

Pololu FSRil on 12.7mm diameetriga aktiivne mõõtmisala, mis muundab jõu takistuseks. Mida suurem jõud, seda väiksem takistus. Anduri tundlikus on optimeeritud inimese vajutuse tuvastamiseks. Jõu - takistus karakteristik näitab FSR anduri takistuslikku käitumist. Tavaliselt jälgib FSR anduri graafik eksponentsfunktsiooni pöördväärtuse graafikut.

Lihtsaim viis mõõta FSR anduri takistust on ehitada andurist ja takistist (Nt 10k oomi) pingejagur mikrokontrolleri toite ja GND vahele. Pingejagurist saadav pinge tuleks ühendada mikrokontrolleri analoogsisendiga. Kui FSR anduri takistus väheneb, siis pingejaguri pinge suureneb.

Et mõõta FSR anduriga jõudu Njuutonites tuleks ka mikrokontrolleri ADC referentspinge seadistada samaks mikrokontrolleri toitepingega. Seejärel on lihtne arvutada FSR anduri takistus kasutades valemit:

RFSR = ( (Vcc - U) * R1) / U

Kus: RFSR - FSR Takistus Vcc – Toitepinge. Tavaliselt 5 V (Kodulaborid I ja II) või 3.3V (Kodulabor III) U – Mõõdetud pinge. ADC pingevahemik peab olema vahemikus 0 V - Vcc R1 – Pingejaguri teine takisti. 10 k

Seejärel saab arvutada anduri juhtivuse CFSR ühikuga S/m [Siemens meetri kohta]. Juhtivuse ja takistus on omavahel pöördvõrdelises seoses:

CFSR = 1 / RFSR

Selleks, et leida jõu väärtus, tuleks juhtivust võrrelda anduri juhtivus-jõu graafikuga, et leida sealt andurile avaldatud jõud. Graafikust võib tuletada ka valemi, mis on tavaliselt sõltuvuses mõõtepiirkonnast. Nt 0-1Kg mõõtmiseks võib kasutada valemit:

FFSR = CFSR / 80

Näiteprogramm kuvab mõõdetud jõudu Njuutonites ja massi kilogrammides LCDl.

 

#include <stdio.h>
#include <homelab/adc.h>
#include <homelab/delay.h>
#include <homelab/pin.h>
#include <homelab/module/lcd_gfx.h>
 
// Muunda väärtus ühest vahemikust teise
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
 
// Põhiprogramm
int main(void)
{
	signed short value; // Analoogmõõtmise tulemus
	char text[16];
	int voltage; // Analoog mõõtmise tulemus teisendatuna pingeks
	unsigned long resistance; // Pinge teisendatuna takistuseks
	unsigned long conductance; 
	long force; // Takistus teisendatuna jõuks
	long weight; // Jõud teisendatuna massiks
 
	// LCD käivitamine.
	lcd_gfx_init();
 
	// Puhasta LCD.
	lcd_gfx_clear();
 
	// Prindi programmi nimi.
	lcd_gfx_write_string("Jõu andur");
 
	// Käivita ADC moodul.
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// Lõpmatu tsükkel.
	while (true)
	{
		// Mõõda ADC kanalist 0 väärtus
		value = adc_get_average_value(0, 4);
 
		// Analoog väärtus jääb vahemikku 0-1023
		// Muundame selle vahemikku 0-5000 (0V - 5000mV)
	        voltage = map(value, 0, 1023, 0, 5000);
 
		// Arvutame anduri takistuse
		resistance = 5000 - voltage;     
	        resistance *= 10000; // 10K takisti
	        resistance /= voltage; // FSR takistus oomides
 
		conductance = 1000000; //Mõõdame mikro-oomides
	        conductance /= resistance; // Leiame juhtivuse
 
 		lcd_gfx_goto_char_xy(1,3);
 
		// Arvutame ja prindime jõu
                force = conductance / 80;
                sprintf(text, "%lu Njuutonit", force);
		lcd_gfx_goto_char_xy(1,3);
		lcd_gfx_write_string(text);
 
		// Arvutame ja prindime massi
		lcd_gfx_goto_char_xy(1,4);
		weight = force / 9,8;
		sprintf(text, "%lu kg   ", weight);
		lcd_gfx_write_string(text);
 
		// Ootame
		sw_delay_ms(500);
	}
}
et/examples/sensor/force.1411990357.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0