V tomto návode vyvinieme obvod využívajúci snímač sily, Arduino Uno a servomotor. Bude to systém riadenia serva, kde je poloha hriadeľa serva určená hmotnosťou prítomnou na snímači sily. Než pôjdeme ďalej, poďme sa baviť o servo a ďalších komponentoch.
Servomotory sa používajú tam, kde je potrebný presný pohyb alebo poloha hriadeľa. Nie sú navrhované pre vysokorýchlostné aplikácie. Sú navrhnuté pre nízku rýchlosť, stredný krútiaci moment a presnú aplikáciu polohy. Tieto motory sa používajú v strojoch s robotickými ramenami, riadení letov a riadiacich systémoch. Servomotory sa používajú aj v niektorých tlačiarňach a faxoch.
Servomotory sú k dispozícii v rôznych tvaroch a veľkostiach. Servomotor bude mať hlavne vodiče, jeden je na kladné napätie, druhý na zem a posledný na nastavenie polohy. ČERVENÝ vodič je pripojený k napájaniu, čierny vodič je pripojený k zemi a ŽLTÝ vodič je pripojený k signálu.
Servomotor je kombináciou jednosmerného motora, systému riadenia polohy a prevodov. Poloha hriadeľa jednosmerného motora je nastavovaná riadiacou elektronikou v serve na základe prevádzkového pomeru signálu PWM k vývodu SIGNAL. Jednoducho povedané, riadiaca elektronika nastaví polohu hriadeľa riadením jednosmerného motora. Tieto údaje týkajúce sa polohy hriadeľa sa posielajú cez kolík SIGNAL. Polohové údaje do riadenia by sa mali odosielať vo forme signálu PWM cez kolík Signal servomotora.
Frekvencia signálu PWM (Pulse Width Modulated) sa môže líšiť v závislosti od typu servomotora. Dôležitá je tu POVINNOSŤ PWM signálu. Na základe tohto POTREBNÉHO POMERU riadiaca elektronika nastaví hriadeľ.
Ako je znázornené na nasledujúcom obrázku, pre posunutie hriadeľa na 9o hodín musí byť ZAPÍNACIA DÁVKA 1/18. 1 mil. Sekundu „času zapnutia“ a 17 mil. Sekundu „času vypnutia“ v signáli 18 ms.
Aby sa hriadeľ mohol posunúť na 12 hodín, musí byť čas zapnutia signálu 1,5 ms a čas vypnutia 16,5 ms.
Tento pomer je dekódovaný riadiacim systémom v seru a na základe neho upravuje polohu.
Tento PWM je tu generovaný pomocou ARDUINO UNO.
Zatiaľ teda vieme, že môžeme ovládať hriadeľ SERVO MOTOR zmenou pracovného pomeru signálu PWM generovaného UNO.
Teraz si povieme niečo o silovom senzore alebo senzore hmotnosti.
Na prepojenie snímača FORCE s ARDUINO UNO použijeme v arduno uno funkciu 8 bit ADC (Analog to Digital Conversion).
Senzor FORCE je prevodník, ktorý mení svoj odpor pri pôsobení tlaku na povrch. Senzor FORCE je k dispozícii v rôznych veľkostiach a tvaroch.
Budeme používať jednu z lacnejších verzií, pretože tu nepotrebujeme veľkú presnosť. FSR400 je jedným z najlacnejších snímačov sily na trhu. Obrázok FSR400 je zobrazený na obrázku nižšie.
Teraz je dôležité poznamenať, že FSR 400 je pozdĺžne citlivý, sila alebo hmotnosť by sa mali sústrediť na bludisko v strede oka snímača, ako je to znázornené na obrázku.
Ak použijete silu v nesprávnom čase, mohlo by dôjsť k trvalému poškodeniu zariadenia.
Ďalšou dôležitou vecou, ktorú treba vedieť, je, že snímač dokáže riadiť prúdy vysokého rozsahu. Pri inštalácii teda nezabudnite na budiace prúdy. Senzor má tiež limit sily, ktorý je 10 Newtonov. Môžeme teda použiť iba 1 kg hmotnosti. Ak sú použité hmotnosti vyššie ako 1 kg, snímač môže vykazovať určité odchýlky. Ak sa zvýši o viac ako 3 kg. snímač by sa mohol trvale poškodiť.
Ako už bolo povedané, tento snímač sa používa na snímanie zmien tlaku. Takže keď sa na snímač FORCE aplikuje hmotnosť, odpor sa drasticky zmení. Odpor FS400 voči hmotnosti je uvedený v nasledujúcom grafe:
Ako je znázornené na obrázku vyššie, odpor medzi dvoma kontaktmi snímača klesá s hmotnosťou alebo sa zvyšuje vodivosť medzi dvoma kontaktmi snímača.
Odpor čistého vodiča je daný:
Kde, p- Odpor vodiča
l = dĺžka vodiča
A = plocha vodiča.
Teraz uvažujte o vodiči s odporom „R“, ak na vrchný vodič vyviniete tlak, plocha na vodiči sa zmenší a jeho dĺžka sa vplyvom tlaku zvýši. Podľa vzorca by sa teda odpor vodiča mal zvýšiť, pretože odpor R je nepriamo úmerný ploche a tiež priamo úmerný dĺžke l.
Takže s týmto pre vodič pod tlakom alebo hmotnosťou sa odpor vodiča zvyšuje. Ale táto zmena je v porovnaní s celkovým odporom malá. Pre značnú zmenu je veľa vodičov naskladaných dohromady.
Toto sa deje vo vnútri silových snímačov zobrazených na obrázku vyššie. Pri pozornom pohľade je vidieť veľa riadkov vo vnútri snímača. Každá z týchto čiar predstavuje vodič. Citlivosť snímača je v číslach vodičov.
Ale v tomto prípade bude odpor klesať s tlakom, pretože tu použitý materiál nie je čistý vodič. FSR sú robustné zariadenia s polymérovou vrstvou (PTF). Nejde teda o zariadenia z čistého vodivého materiálu. Sú vyrobené z materiálu, ktorý vykazuje pokles odporu so zvyšovaním sily pôsobiacej na povrch snímača.
Tento materiál vykazuje vlastnosti, ktoré sú uvedené v grafe FSR.
Táto zmena odporu nemôže urobiť nič dobré, pokiaľ si ich nedokážeme prečítať. Ovládač, ktorý je po ruke, dokáže čítať iba šance na napätie a nič menej, preto použijeme obvod rozdeľovača napätia, pomocou ktorého môžeme odvodiť zmenu odporu ako zmenu napätia.
Delič napätia je odporový obvod a je znázornený na obrázku. V tejto odporovej sieti máme jeden konštantný odpor a druhý premenný odpor. Ako je znázornené na obrázku, R1 je tu konštantný odpor a R2 je snímač FORCE, ktorý funguje ako odpor.
Stred vetvy sa prevedie na meranie. So zmenou R2 máme zmenu vo Vout. Takže s týmto máme napätie, ktoré sa mení s hmotnosťou.
Teraz je dôležité poznamenať, že vstup, ktorý prijme radič na prevod ADC, je len 50µAmp. Tento zaťažovací efekt odporového deliča napätia je dôležitý, pretože prúd odoberaný z Vout deliča napätia zvyšuje zvyšovanie percentuálneho podielu chyby, zatiaľ sa nemusíme starať o zaťažovací efekt.
Teraz, keď na SENZOR SILY pôsobí sila, napätie na konci rozdeľovača zmení tento pin po pripojení k kanálu ADC UNO, dostaneme inú digitálnu hodnotu ako ADC UNO, kedykoľvek sa zmení sila na snímač.
Táto digitálna hodnota ADC je porovnaná s pracovným pomerom signálu PWM, takže máme riadenie polohy SERVO vo vzťahu k sile pôsobiacej na snímač.
Komponenty
Hardvér: UNO, napájanie (5v), kondenzátor 1000uF, kondenzátor 100nF (3 kusy), odpor 100KΩ, SERVO MOTOR (SG 90), odpor 220Ω, snímač sily FSR400.
Softvér: Atmel studio 6.2 alebo aurdino každú noc.
Schéma zapojenia a pracovné vysvetlenie
Schéma zapojenia pre servo riadenie motora pomocou snímača sily je znázornený na nižšie obrázku.
Napätie na snímači nie je úplne lineárne; bude to hlučný. Na odfiltrovanie šumu sú kondenzátory umiestnené cez každý odpor v deliacom obvode, ako je to znázornené na obrázku.
Tu vezmeme napätie poskytované deličom (napätie, ktoré predstavuje váhu lineárne) a privedieme ho do jedného z ADC kanálov Arduino Uno. Po prepočte vezmeme túto digitálnu hodnotu (predstavujúcu hmotnosť) a spojíme ju s hodnotou PWM a poskytneme tento signál PWM motoru SERVO.
Takže s hmotnosťou máme hodnotu PWM, ktorá mení svoj pracovný pomer v závislosti na digitálnej hodnote. Čím vyššia je digitálna hodnota, tým vyšší je pracovný pomer PWM. Takže pri signáli PWM s vyšším pomerom zaťaženia by sa mal hriadeľ serva dostať úplne doprava alebo doľava podľa obrázka uvedeného v úvode.
Ak je hmotnosť nižšia, budeme mať nižší pomer výkonu PWM a podľa obrázku v úvode by sa malo servo dostať úplne doprava.
S týmto máme SERVO riadenie polohy pomocou WEIGHT alebo FORCE.
Aby sa to stalo, musíme v programe ustanoviť niekoľko pokynov a podrobne si o nich povieme nižšie.
ARDUINO má šesť ADC kanálov, ako je znázornené na obrázku. V nich môže byť jeden alebo všetky použité ako vstupy pre analógové napätie. UNO ADC má 10 bitové rozlíšenie (teda celočíselné hodnoty od (0- (2 ^ 10) 1023)). To znamená, že bude mapovať vstupné napätie medzi 0 a 5 voltami na celočíselné hodnoty medzi 0 a 1023. Takže pre každú (5/1024 = 4,9 mV) na jednotku.
Tu použijeme A0 z UNO. Potrebujeme vedieť niekoľko vecí.
|
Najskôr majú kanály ADC Arduino Uno predvolenú referenčnú hodnotu 5 V. To znamená, že môžeme poskytnúť maximálne vstupné napätie 5 V pre prevod ADC na ktoromkoľvek vstupnom kanáli. Pretože niektoré snímače poskytujú napätie od 0 do 2,5 V, pri referenčnej hodnote 5 V dostaneme menšiu presnosť, takže máme inštrukciu, ktorá nám umožňuje zmeniť túto referenčnú hodnotu. Takže pre zmenu referenčnej hodnoty, ktorú máme („analogReference ();“), teraz ju necháme ako.
Ako predvolené nastavenie dostaneme maximálne rozlíšenie ADC na doske, ktoré je 10 bitov, toto rozlíšenie je možné zmeniť pomocou inštrukcie („analogReadResolution (bits);“). Táto zmena rozlíšenia sa môže v niektorých prípadoch hodiť. Zatiaľ to necháme tak.
Teraz, ak sú vyššie uvedené podmienky nastavené na predvolené, môžeme načítať hodnotu z ADC kanálu „0“ priamym volaním funkcie „analogRead (pin);“, tu „pin“ predstavuje pin, kam sme pripojili analógový signál, v tomto prípade to bude „A0“. Hodnotu z ADC možno vziať do celého čísla ako „int SENSORVALUE = analogRead (A0); ”, Touto inštrukciou sa hodnota po ADC uloží do celého čísla“ SENSORVALUE ”.
PWM UNO je možné dosiahnuť na ktoromkoľvek z pinov symbolizovaných ako „~“ na doske plošných spojov. V UNO je šesť kanálov PWM. Pre náš účel použijeme PIN3.
analogWrite (3, VALUE); |
Z vyššie uvedenej podmienky môžeme priamo získať signál PWM na zodpovedajúcom kolíku. Prvý parameter v zátvorkách slúži na voľbu počtu pinov signálu PWM. Druhý parameter je pre pomer písania.
Hodnotu PWM v Arduino Uno je možné zmeniť od 0 do 255. S „0“ ako najnižšou na „255“ ako najvyššou. S pomerom cla 255 dostaneme 5V na PIN3. Ak je ukazovateľ cla uvedený ako 125, dostaneme na PIN3 2,5 V.
Teraz si povieme niečo o ovládaní servomotora, Arduino Uno má funkciu, ktorá nám umožňuje ovládať polohu serva iba zadaním hodnoty stupňa. Povedzme, že keď chceme, aby servo bolo na 30, môžeme priamo reprezentovať hodnotu v programe. Hlavný súbor SERVO sa interne stará o všetky výpočty koeficientu cla. Tu sa môžete dozvedieť viac o ovládaní servomotorov pomocou arduina.
Teraz sa sg90 môže pohybovať od 0 do 180 stupňov, máme výsledok ADC 0-1024.
ADC je teda približne šesťkrát SERVO POSITION. Takže vydelením výsledku ADC číslom 6 dostaneme približnú pozíciu ruky SERVO. Preto máme signál PWM, ktorého pracovný pomer sa lineárne mení s VÁHOU alebo SILOU. Toto je dané servomotorom, môžeme ovládať servomotor snímačom sily.