Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:sensor:force [2014/03/03 10:15] rellermaaet:examples:sensor:force [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Jõuandur ====== ====== Jõuandur ======
- +//Vajalikud teadmised:  
-<note>Tõlkida ja redigeerida</note> +[HW] [[et:hardware:homelab:digi]], [HW] [[et:hardware:homelab:combo]],  
- +[ELC] [[et:electronics:voltage_divider]], \\ 
-//Vajalikud teadmised: [HW] [[et:hardware:homelab:sensor]], [HW] [[et:hardware:homelab:digi]],  [AVR] [[et:avr:adc]], [LIB] [[et:software:homelab:library:adc]], [LIB] [[et:software:homelab:library:module:lcd_graphic]], [LIB] [[et:software:homelab:library:module:sensor]]//+[AVR] [[et:avr:adc]], 
 +[LIB] [[et:software:homelab:library:adc]], [LIB] [[et:software:homelab:library:module:lcd_graphic]]//
  
 ===== Teooria===== ===== Teooria=====
  
-[{{  :examples:sensor:force:09375-1.jpg?250|Jõust sõltuv takisti}}] +[{{ :examples:sensor:force:09375-1.jpg?200|Jõust sõltuv takisti}}] 
-[{{  :en:examples:sensor:forse_sensing_resistor.png?250|Jõust sõltuva takisti kihid}}]+[{{ :en:examples:sensor:forse_sensing_resistor.png?200|Jõust sõltuva takisti kihid}}]
  
-FSR (//force-sensing resistor//e jõust sõltuv takisti on andurmillega on võimalik mõõta rõhumisjõudu, pigistamist või kaalu. FSR on põhimõtteliselt takistimille 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.+Takistuslik jõuandur (inglise keeles //force-sensing resistor//, lühend FSR) on sisuliselt piesoelektriline takistimille takistus muutub temale mõjuva rõhumisjõudu toimel. Anduriga saab mõõta pigistamist või kaalu. Odavad takistuslikud jõuandurid on lihtsalt kasutatavad, kuid ei ole väga täpsed. See tähendab, et anduriga ei ole võimalik mõõta absoluutseid väärtuseid vaid pigem suhtelisi suuruseid. Nagu kõikide takistuslike anduritega piisab anduri väärtuse lugemiseks mikrokontrolleriga lihtsast pingejaguri ühendusskeemist, kus pingejaguri väljund ühendatakse mikrokontrolleri analoogsisendisse. Kuigi FSR on suhteliselt hea pingetaluvuse ja löögikindlusega võib see kahjustuda, kui survejõudu avaldatakse pika aja jooksul.
  
-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 asukohtneed puutuvad rohkem kokku ja seeläbi materjali takistus muutub.+FSR koosneb voolu juhtivast polümeerist, mis muudab oma takistust vastavalt sellele avaldatud rõhumisjõule. Mõõteelement koosneb nii elektrit juhtivatest kui -mittejuhtivatest osakestest, mis on paigutatud maatriksisse. Vajutades polümeerile muutub elektrit juhtivate osakeste asukoht ja need puutuvad rohkem kokku ning seeläbi materjali takistus muutub
 + 
 +FSR jõuandurite tööpiirkond on tavaliselt vahemikus 0,3 N kuni 100 N, mis tähendab kaaluvahemikku 30 g - 10 kg. See on küllalt suur mõõtepiirkond ja võimaldab seega antud jõuandureid rakendada väga erinevates süsteemides. Samuti on võimalik tööpiirkonda suurendada näiteks kangmehhanismi abil, juhul, kui on vaja mõõta suuremat kaalu. Tähele tuleks siiski panna seda, et antud andur ei ole mõeldud täpismõõtmisteks vaid pigem mingi jõuvahemiku tuvastamiseks. Samuti tuleb arvestada anduri reaktsiooniaega, eriti jõu eemaldamisel, mil andur taastab oma vaikeväärtuse. Taastumisaeg sõltub eelnevalt rakendatud jõust ja selle rakenduskestusest.
  
 FSR andureid kasutatakse tavaliselt vajutustugevust mõõtvates nuppudes ning näiteks muusikainstrumentides, autoistmetes (istuva inimese tuvastamiseks) ja robootikas. FSR andureid kasutatakse tavaliselt vajutustugevust mõõtvates nuppudes ning näiteks muusikainstrumentides, autoistmetes (istuva inimese tuvastamiseks) ja robootikas.
Line 18: Line 21:
 ===== Praktika ===== ===== Praktika =====
  
-[{{  :en:examples:sensor:force_conductance_graph.png?250|Jõu-juhtivuse graafik}}] +[{{ :en:examples:sensor:force_conductance_graph.png?370|Jõu-juhtivuse graafik}}]
-[{{  :en:examples:sensor:force_chematic.png?250|Pingejaguri skeem}}]+
  
-Pololu FSRil on 12.7mm diameetriga aktiivne mõõtmisalamis 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.+Kodulabori komplektis on tüüpiline takistuslik jõuandur, mille aktiivse mõõteala diameeter on 12,7 mm. Mida suuremat jõudu mõõtealale avaldada, seda väiksem anduri takistus. Anduri tundlikus on optimeeritud inimese näpuvajutuse tuvastamiseks. Jõu - takistuse graafik illustreerib anduri takistuse sõltuvust avaldatud rõhumisjõust, mis tüüpiliselt jälgib  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. +Lihtsaim viis FSR anduri kasutamiseks on ühendada see pingejagurisse mikrokontrolleri toite ja sisendsignaali vahele ning konstantne takisti signaali ja maa vahele. Pingejaguri konstantseks takistiks võib valida 1 kΩ. Pingejaguri väljundpinge ühendatakse mikrokontrolleri analoogsisendisse. 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:+Jõudu leidmiseks njuutonites tuleb mikrokontrolleri ADC võrdluspinge seadistada samaks mikrokontrolleri toitepingega. Seejärel on lihtne arvutada FSR anduri takistus kasutades valemit:
  
-R<sub>FSR</sub> = ( (V<sub>cc</sub> - U) * R1) / U+R<sub>FSR</sub> = ( (V<sub>cc</sub> * R1) / U) - R1
  
 Kus: Kus:
-R<sub>FSR</sub>  FSR Takistus +R<sub>FSR</sub> –  FSR anduri takistus 
-V<sub>cc</sub> – Toitepinge. Tavaliselt 5 V (Kodulaborid I ja II) või 3.3V (Kodulabor III) +V<sub>cc</sub> – Toitepinge. Tavaliselt 5 V (Kodulaborid I ja II) või 3,3 V (Kodulabor III) 
-U – Mõõdetud pinge. ADC pingevahemik peab olema vahemikus 0 V - Vcc  +U – Pingejaguri väljundpinge. ADC pingevahemik peab olema vahemikus 0 V - Vcc (Kodulabor III puhul 0 - 2,064 V) 
-R1 – Pingejaguri teine takisti. 10 k+R1 – Pingejaguri teine takisti, näiteks 1 kΩ
  
 Seejärel saab arvutada anduri juhtivuse C<sub>FSR</sub> ühikuga S/m [Siemens meetri kohta]. Juhtivuse ja takistus on omavahel pöördvõrdelises seoses: Seejärel saab arvutada anduri juhtivuse C<sub>FSR</sub> ühikuga S/m [Siemens meetri kohta]. Juhtivuse ja takistus on omavahel pöördvõrdelises seoses:
Line 39: Line 41:
 C<sub>FSR</sub> = 1 / R<sub>FSR</sub>  C<sub>FSR</sub> = 1 / R<sub>FSR</sub> 
  
-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:+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. Näiteks 0-1 Kg mõõtmiseks võib kasutada valemit:
  
 F<sub>FSR</sub> = C<sub>FSR</sub> / 80 F<sub>FSR</sub> = C<sub>FSR</sub> / 80
  
-Näiteprogramm kuvab mõõdetud jõudu Njuutonites ja massi kilogrammides LCDl. +Näiteprogramm kuvab mõõdetud jõudu njuutonites ja massi kilogrammides LCD-l.
- +
- +
- +
-~~PB~~+
  
 <code c> <code c>
 +// Kodulabori jõuanduri näidisprogramm
 #include <stdio.h> #include <stdio.h>
 #include <homelab/adc.h> #include <homelab/adc.h>
Line 56: Line 55:
 #include <homelab/module/lcd_gfx.h> #include <homelab/module/lcd_gfx.h>
  
-// Muunda väärtus ühest vahemikust teise+// Väärtus vahemiku teisendusfunktsioon
 long map(long x, long in_min, long in_max, long out_min, long out_max) 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;+    return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
 } }
- +
 // Põhiprogramm // Põhiprogramm
 int main(void) int main(void)
 { {
- signed short value; // Analoogmõõtmise tulemus +    signed short value; // Analoogmõõtmise tulemus 
- char text[16]; +    char text[50]; 
- int voltage; // Analoog mõõtmise tulemus teisendatuna pingeks +    int voltage; // Analoogmõõtmise tulemus teisendatuna pingeks 
- unsigned long resistance; // Pinge teisendatuna takistuseks +    unsigned long resistance; // Pinge teisendatuna takistuseks 
- unsigned long conductance;  +    unsigned long conductance; 
- long force; // Takistus teisendatuna jõuks +    long force; // Takistus teisendatuna jõuks 
- long weight; // Jõud teisendatuna massiks +    long weight; // Jõud teisendatuna massiks 
-  + 
- // LCD käivitamine. +    // LCD seadistamine 
- lcd_gfx_init(); +    lcd_gfx_init(); 
-  +    lcd_gfx_clear(); 
- // Puhasta LCD. +    lcd_gfx_write_string("Jõu andur"); 
- lcd_gfx_clear(); + 
-  +    // ADC mooduli algseadistamine 
- // Prindi programmi nimi. +    adc_init(ADC_REF_AVCC, ADC_PRESCALE_8); 
- lcd_gfx_write_string("Jõu andur"); + 
-  +    // Lõputu tsükkel 
- // Käivita ADC moodul. +    while (1
- adc_init(ADC_REF_AVCC, ADC_PRESCALE_8); +    
-  +        // Analoogkanali väärtuse lugemine 
- // Lõpmatu tsükkel. +        value = adc_get_value(1); 
- while (true+ 
-+        // Analoog väärtuse, mis jääb vahemikku 0-2048 
- // Mõõda ADC kanalist väärtus +        // muundamine vahemikku 0-2064 (0 V - 2064 mV) 
- value = adc_get_average_value(04);+        // Kuna Kodulabor III puhul vastab ADC tulem peaaegu pingele 1 mV,  
 +        // siis pole muundamine vajalik 
 +        //voltage = map(value, 0, 2048, 0, 2064); 
 +        voltage = value
 + 
 +        // Anduri takistuse arvutamine 
 +        resistance = (3300000/voltage) - 1000; 
 + 
 +        // Juhtivuse arvutamine 
 +        conductance = 1000000/resistance; 
 + 
 +        lcd_gfx_goto_char_xy(1,3);
  
- // Analoog väärtus jääb vahemikku 0-1023 +        // Jõu väärtuse arvutamine njuutonites ja selle kuvamine 
- // Muundame selle vahemikku 0-5000 (0V - 5000mV+        force = conductance 80; 
-         voltage = map(value0, 1023, 0, 5000);+        sprintf(text, "%lu Njuutonit", force); 
 +        lcd_gfx_goto_char_xy(1,3); 
 +        lcd_gfx_write_string(text);
  
- // Arvutame anduri takistuse +        // Kaalu väärtuse arvutamine kilogrammides ja selle kuvamine 
- resistance = 5000 - voltage;      +        lcd_gfx_goto_char_xy(1,4); 
-         resistance *= 10000; // 10K takisti +        weight = force / 9,8
-         resistance /= voltage; // FSR takistus oomides +        sprintf(text, "%lu kg   ", weight); 
-  +        lcd_gfx_write_string(text);
- 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 +        sw_delay_ms(500); 
- 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); +
- }+
 } }
 </code> </code>
et/examples/sensor/force.1393841749.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