Šajā apmācībā mēs izstrādāsim ķēdi, izmantojot Force sensoru, Arduino Uno un servomotoru. Tā būs servo vadības sistēma, kurā servo vārpstas stāvokli nosaka pēc svara sensora esošā svara. Pirms doties tālāk, parunāsim par servo un citiem komponentiem.
Servomotori tiek izmantoti tur, kur nepieciešama precīza vārpstas kustība vai novietojums. Tie nav paredzēti ātrgaitas lietojumiem. Tie tiek piedāvāti mazam ātrumam, vidējam griezes momentam un precīzai pozīcijas pielietošanai. Šos motorus izmanto robotu roku mašīnās, lidojuma vadības un vadības sistēmās. Servomotorus izmanto arī dažos printeros un faksa aparātos.
Servomotori ir pieejami dažādās formās un izmēros. Servomotorā galvenokārt būs vadi, viens ir paredzēts pozitīvam spriegumam, otrs - zemējumam, bet pēdējais - pozīcijas iestatīšanai. RED vads ir savienots ar strāvu, melnais vads ir savienots ar zemi un dzeltens vads ir savienots ar signālu.
Servomotors ir līdzstrāvas motora, stāvokļa kontroles sistēmas, zobratu kombinācija. Līdzstrāvas motora vārpstas stāvokli regulē servo vadības elektronika, pamatojoties uz PWM signāla SIGNAL tapas darba attiecību. Vienkārši runājot, vadības elektronika regulē vārpstas stāvokli, kontrolējot līdzstrāvas motoru. Šie dati par vārpstas stāvokli tiek nosūtīti caur SIGNAL tapu. Pozīcijas dati vadības ierīcei jānosūta PWM signāla veidā caur servomotora signāla tapu.
PWM (pulsa platuma modulēta) signāla frekvence var atšķirties atkarībā no servomotora veida. Svarīgi šeit ir PWM signāla DUTY RATIO. Pamatojoties uz šo DUTY RATION, vadības elektronika noregulē vārpstu.
Kā parādīts zemāk redzamajā attēlā, lai vārpstu pārvietotu uz 9o pulksteni, IESLĒGŠANAS RĀCIJAI jābūt 1/18. 1milli sekundes no “ON time” un 17milli sekundes “OFF time” ar 18ms signālu.
Lai vārpstu varētu pārvietot uz 12o pulksteni, signāla IESLĒGŠANAS laikam jābūt 1,5 ms un Izslēgšanas laikam 16,5 ms.
Šo attiecību dekodē vadības sistēma servo, un tā pielāgo pozīciju, pamatojoties uz to.
Šis PWM šeit tiek ģenerēts, izmantojot ARDUINO UNO.
Tagad mēs zinām, ka mēs varam kontrolēt SERVO MOTOR vārpstu, mainot UNO ģenerētā PWM signāla darba attiecību.
Tagad parunāsim par spēka sensoru vai svara sensoru.
Lai savienotu FORCE sensoru ar ARDUINO UNO, arduno uno mēs izmantosim 8 bitu ADC (Analog to Digital Conversion) funkciju.
FORCE sensors ir devējs, kas maina savu pretestību, kad tiek izdarīts spiediens uz virsmu. FORCE sensors ir pieejams dažādos izmēros un formās.
Mēs izmantosim vienu no lētākajām versijām, jo mums šeit nav vajadzīga liela precizitāte. FSR400 ir viens no lētākajiem spēka sensoriem tirgū. FSR400 attēls ir parādīts zemāk redzamajā attēlā.
Tagad ir svarīgi atzīmēt, ka FSR 400 ir jutīgs visā garumā, spēks vai svars jākoncentrē uz labirintu sensora acs vidū, kā parādīts attēlā.
Ja spēks tiek piemērots nepareizā laikā, ierīce var neatgriezeniski sabojāt.
Vēl viena svarīga lieta, kas jāzina, sensors var vadīt liela diapazona strāvas. Tāpēc instalēšanas laikā paturiet prātā braukšanas straumes. Arī sensora spēka ierobežojums ir 10 niutoni. Tātad mēs varam uzklāt tikai 1 kg svara. Ja tiek piemērots svars, kas lielāks par 1 kg, sensors var parādīt dažas novirzes. Ja tas ir palielinājies vairāk nekā par 3 kg. sensors var neatgriezeniski sabojāt.
Kā stāstīts iepriekš, šo sensoru izmanto spiediena izmaiņu uztveršanai. Tātad, kad svars tiek uzklāts virs FORCE sensora, pretestība tiek krasi mainīta. FS400 pretestība pār svaru ir parādīta zemāk esošajā diagrammā:
Kā parādīts iepriekšējā attēlā, pretestība starp diviem sensora kontaktiem samazinās līdz ar svaru vai palielinās vadītspēja starp diviem sensora kontaktiem.
Tīra vadītāja pretestību dod:
Kur, p- Vadītāja pretestība
l = vadītāja garums
A = vadītāja laukums.
Tagad apsveriet vadītāju ar pretestību “R”, ja uz vadītāja augšdaļas tiek izdarīts zināms spiediens, spiediena rezultātā samazinās laukums uz vadītāja un palielinās vadītāja garums. Tātad pēc formulas vadītāja pretestībai vajadzētu palielināties, jo pretestība R ir apgriezti proporcionāla laukumam un arī tieši proporcionāla garumam l.
Tātad ar šo vadītājam zem spiediena vai svara palielinās vadītāja pretestība. Bet šīs izmaiņas ir mazas, salīdzinot ar kopējo pretestību. Lai veiktu ievērojamas izmaiņas, daudzi vadītāji ir sakrauti kopā.
Tas notiek iepriekšminētajā attēlā parādītajos spēka sensoros. Rūpīgi apskatot, sensora iekšpusē var redzēt daudzas līnijas. Katra no šīm līnijām apzīmē diriģentu. Sensora jutība ir norādīta vadītāju skaitļos.
Bet šajā gadījumā pretestība samazināsies ar spiedienu, jo šeit izmantotais materiāls nav tīrs vadītājs. FSR šeit ir izturīgas polimēru biezas plēves (PTF) ierīces. Tātad šīs nav tīras vadītāja materiāla ierīces. Tie ir izgatavoti no materiāla, kam pretestība samazinās, palielinoties spēkam, kas tiek piemērots sensora virsmai.
Šis materiāls parāda īpašības, kā parādīts FSR diagrammā.
Šīs pretestības izmaiņas nevar dot neko labu, ja vien mēs tās nevaram nolasīt. Kontrolieris, kas atrodas pie rokas, var nolasīt tikai sprieguma izredzes un ne mazāk, šim nolūkam mēs izmantosim sprieguma dalītāja ķēdi, ar to mēs varam iegūt pretestības izmaiņas, mainoties spriegumam.
Sprieguma dalītājs ir pretestības ķēde un parādīts attēlā. Šajā pretestības tīklā mums ir viena pastāvīga pretestība un cita mainīga pretestība. Kā parādīts attēlā, R1 šeit ir nemainīga pretestība, un R2 ir FORCE sensors, kas darbojas kā pretestība.
Zaru viduspunkts tiek mērīts. Ar R2 izmaiņām mums ir izmaiņas pie Vout. Tātad ar to mums ir spriegums, kas mainās atkarībā no svara.
Šeit ir svarīgi atzīmēt, ka kontrollera ievadītā ADC pārveidošanas ievade ir tik maza kā 50µAmp. Šis uz pretestību balstītā sprieguma dalītāja slodzes efekts ir svarīgs, jo strāva, kas iegūta no sprieguma dalītāja Vout, palielina kļūdas procentu, tagad mums nav jāuztraucas par slodzes efektu.
Tagad, kad spēks tiek iedarbināts uz FORCE SENSOR, spriegums dalītāja galā maina šo tapu, savienojot to ar UNO ADC kanālu, mēs saņemsim atšķirīgu digitālo vērtību no UNO ADC, kad mainās spēks uz sensoru.
Šī ADC digitālā vērtība tiek saskaņota ar PWM signāla darba attiecību, tāpēc mums ir SERVO pozīcijas kontrole attiecībā uz sensora spēku.
Komponenti
Aparatūra: UNO, barošanas avots (5v), 1000uF kondensators, 100nF kondensators (3 gab.), 100KΩ rezistors, SERVO MOTOR (SG 90), 220Ω rezistors, FSR400 spēka sensors.
Programmatūra: Atmel studio 6.2 vai aurdino katru vakaru.
Shēmas shēma un darba skaidrojums
Circuit diagramma servomotora kontrolei force sensors ir parādīts zemāk attēlā.
Sensora spriegums nav pilnīgi lineārs; tas būs trokšņains. Lai filtrētu troksni, kondensatori tiek novietoti pāri katram rezistoram sadalītāja ķēdē, kā parādīts attēlā.
Šeit mēs ņemsim dalītāja nodrošināto spriegumu (spriegums, kas lineāri atspoguļo svaru) un ievadīsim to vienā no Arduino Uno ADC kanāliem. Pēc konvertēšanas mēs ņemsim šo digitālo vērtību (kas apzīmē svaru) un saistīs to ar PWM vērtību un sniegs šo PWM signālu SERVO motoram.
Tātad ar svaru mums ir PWM vērtība, kas maina tā darba attiecību atkarībā no digitālās vērtības. Augstāka digitālā vērtība ir augstāka PWM darba attiecība. Tātad ar augstāku PWM signālu, servo vārpstai vajadzētu sasniegt galējo labo vai kreiso pusi, kā norādīts ievadā sniegtajā attēlā.
Ja svars ir mazāks, mums būs mazāka PWM darba attiecība, un, kā norādīts ievaddaļas attēlā, servo vajadzētu sasniegt galējo labo pusi.
Ar to mums ir SERVO pozīcijas kontrole ar SVARU vai SPĒKU.
Lai tas notiktu, mums programmā jāievieš daži norādījumi, un mēs par tiem sīkāk runāsim tālāk.
ARDUINO ir seši ADC kanāli, kā parādīts attēlā. Tajos vienu vai visus no tiem var izmantot kā analogā sprieguma ieejas. UNO ADC ir 10 bitu izšķirtspēja (tātad veselu skaitļu vērtības no (0- (2 ^ 10) 1023)). Tas nozīmē, ka tā ieejas spriegumu no 0 līdz 5 voltiem kartēs veselu skaitļu vērtībās no 0 līdz 1023. Tātad katram (5/1024 = 4,9 mV) uz vienu vienību.
Šeit mēs izmantosim UNO A0. Mums jāzina dažas lietas.
|
Pirmkārt, Arduino Uno ADC kanāliem noklusējuma atsauces vērtība ir 5 V. Tas nozīmē, ka mēs varam dot maksimālo ieejas spriegumu 5 V ADC pārveidošanai jebkurā ieejas kanālā. Tā kā daži sensori nodrošina spriegumu no 0-2,5 V, ar 5 V atsauci mēs iegūstam mazāku precizitāti, tāpēc mums ir instrukcija, kas ļauj mums mainīt šo atsauces vērtību. Tātad, lai mainītu mums esošo atsauces vērtību (“analogReference ();”) Pagaidām mēs to atstājam kā.
Pēc noklusējuma mēs iegūstam maksimālo plates ADC izšķirtspēju, kas ir 10 biti, šo izšķirtspēju var mainīt, izmantojot instrukciju (“analogReadResolution (bits);”). Šīs izšķirtspējas izmaiņas dažos gadījumos var būt noderīgas. Pagaidām mēs to atstājam kā.
Ja iepriekš minētie nosacījumi ir iestatīti uz noklusējumu, mēs varam nolasīt kanāla '0' ADC vērtību, tieši izsaucot funkciju "analogRead (pin);", šeit "pin" apzīmē tapu, kur mēs savienojām analogo signālu, šajā gadījumā tas būtu “A0”. Vērtību no ADC var uzskatīt par veselu skaitli kā “int SENSORVALUE = analogRead (A0); ”, Pēc šīs instrukcijas vērtība pēc ADC tiek saglabāta veselā skaitlī“ SENSORVALUE ”.
UNO PWM var sasniegt jebkurā no tapām, kuras PCB plāksnē simbolizē kā “~”. UNO ir seši PWM kanāli. Mēs savam mērķim izmantosim PIN3.
analogWrite (3, VALUE); |
No iepriekš minētā nosacījuma mēs varam tieši iegūt PWM signālu attiecīgajā tapā. Pirmais iekavās esošais parametrs ir PWM signāla tapas numura izvēle. Otrais parametrs ir paredzēts rakstīšanas darba attiecībai.
Arduino Uno PWM vērtību var mainīt no 0 līdz 255. Ar “0” kā zemāko uz “255” kā augstāko. Ar 255 kā darba attiecību mēs saņemsim 5V pie PIN3. Ja nodevas koeficients ir norādīts kā 125, mēs saņemsim 2,5 V pie PIN3.
Tagad parunāsim par servomotora vadību. Arduino Uno ir funkcija, kas ļauj mums kontrolēt servo pozīciju, vienkārši norādot pakāpes vērtību. Sakiet, ja mēs vēlamies, lai servo būtu 30, mēs varam tieši attēlot vērtību programmā. SERVO galvenes fails rūpējas par visiem darba attiecību aprēķiniem iekšēji. Šeit varat uzzināt vairāk par servomotora vadību ar arduino.
Tagad sg90 var pārvietoties no 0-180 grādiem, mums ir ADC rezultāts 0-1024.
Tātad ADC aptuveni sešas reizes pārsniedz SERVO POSITION. Tātad, dalot ADC rezultātu ar 6, mēs iegūsim aptuveno SERVO rokas pozīciju. Tādējādi mums ir PWM signāls, kura darba attiecība lineāri mainās ar SVARU vai SPĒKU. To piešķirot servomotoram, servomotoru varam vadīt ar spēka sensoru.