I denne opplæringen vil vi utvikle en krets ved hjelp av Force sensor, Arduino Uno og en servomotor. Det vil være et servostyringssystem hvor servoakselposisjonen bestemmes av vekten som er tilstede på kraftføleren. La oss snakke om servoen og andre komponenter før vi går videre.
Servomotorer brukes der det er behov for nøyaktig akselbevegelse eller posisjon. Disse er ikke foreslått for applikasjoner med høy hastighet. Disse er foreslått for lav hastighet, middels dreiemoment og nøyaktig påføring av posisjon. Disse motorene brukes i robotarmmaskiner, flykontroller og kontrollsystemer. Servomotorer brukes også i noen av skrivere og faksmaskiner.
Servomotorer er tilgjengelige i forskjellige former og størrelser. En servomotor vil hovedsakelig ha ledninger, den ene er for positiv spenning, den andre er for bakken og den siste er for posisjonsinnstilling. Den RØDE ledningen er koblet til strøm, den svarte ledningen er koblet til jord og GUL ledningen er koblet til signalet.
En servomotor er en kombinasjon av DC-motor, posisjonskontrollsystem, gir. Posisjonen til akselen til DC-motoren justeres av kontrollelektronikken i servoen, basert på PWM-signalets signalforhold SIGNAL-pinnen. Enkelt sagt justerer kontrollelektronikken akselposisjonen ved å kontrollere DC-motoren. Disse dataene angående akselens posisjon sendes gjennom SIGNAL-pinnen. Posisjonsdataene til kontrollen skal sendes i form av PWM-signal gjennom signalpinnen til servomotoren.
Frekvensen av PWM (Pulse Width Modulated) signal kan variere avhengig av type servomotor. Det viktige her er plikten for PWM-signalet. Basert på denne plikten, justerer kontrollelektronikken akselen.
Som vist i figuren nedenfor, må SLÅ PÅ RASJONEN være 1 / 18.ie for at akselen skal flyttes til 9o klokke. 1milli sekund av 'PÅ tid' og 17milli sekund av 'AV tid' i et 18ms signal.
For at akselen skal flyttes til 12o klokke må ON-tiden for signalet være 1,5ms og OFF-tiden skal være 16,5ms.
Dette forholdet dekodes av styresystemet i servo, og det justerer posisjonen basert på det.
Denne PWM her inne er generert ved bruk av ARDUINO UNO.
Så foreløpig vet vi at vi kan kontrollere SERVO MOTOR-akselen ved å variere arbeidsforholdet til PWM-signal generert av UNO.
La oss nå snakke om kreftføler eller vektføler.
For å grensesnitt en FORCE-sensor med ARDUINO UNO, skal vi bruke 8-biters ADC (Analog til Digital konvertering) -funksjon i arduno uno.
En FORCE-sensor er en svinger som endrer motstand når trykk påføres på overflaten. FORCE sensor er tilgjengelig i forskjellige størrelser og former.
Vi skal bruke en av de billigere versjonene fordi vi ikke trenger mye nøyaktighet her. FSR400 er en av de billigste kraftfølerne i markedet. Bildet av FSR400 er vist i figuren nedenfor.
Nå er det viktig å merke seg at FSR 400 er følsom over lengden. Kraften eller vekten bør konsentreres om labyrinten midt i øye på sensoren, som vist på figuren.
Hvis kraften blir brukt på feil tidspunkter, kan enheten skade permanent.
En annen viktig ting å vite at sensoren kan drive strømmer av høyt område. Så husk kjørestrømmene mens du installerer. Også sensoren har en kraftbegrensning på 10 Newton. Så vi kan bare bruke 1 kg vekt. Hvis det brukes vekter høyere enn 1 kg, kan sensoren vise noen avvik. Hvis det er økt mer enn 3 kg. sensoren kan skade permanent.
Som tidligere fortalt, brukes denne sensoren til å registrere trykkendringene. Så når vekten påføres på FORCE-sensoren, endres motstanden drastisk. Motstanden til FS400 over vekt er vist i grafen nedenfor:
Som vist i figuren ovenfor, reduseres motstanden mellom de to kontaktene til sensoren med vekt eller konduktansen mellom to kontaktene til sensoren øker.
Motstanden til en ren leder er gitt av:
Hvor, p- Motstand av leder
l = Lengde på leder
A = lederområde.
Tenk nå på en leder med motstand "R", hvis det påføres noe trykk på toppen av lederen, reduseres arealet på lederen og lederens lengde øker som et resultat av trykk. Så med formelen skal lederens motstand øke, da motstanden R er omvendt proporsjonal med arealet og også direkte proporsjonal med lengden l.
Så med dette for en leder under trykk eller vekt øker lederens motstand. Men denne endringen er liten sammenlignet med total motstand. For en betydelig forandring er mange ledere stablet sammen.
Dette er hva som skjer i Force Sensors vist i figuren ovenfor. Når man ser nøye kan man se mange linjer inne i sensoren. Hver av disse linjene representerer en leder. Sensitiviteten til sensoren er i ledertall.
Men i dette tilfellet vil motstanden avta med trykk fordi materialet som brukes her ikke er en ren leder. FSR her er robuste polymer tykk film (PTF) enheter. Så dette er ikke rene ledermaterialeenheter. Disse består av et materiale som viser en reduksjon i motstand med økning i kraft påført sensorens overflate.
Dette materialet viser egenskaper som vist i grafen til FSR.
Denne endringen i motstand kan ikke gjøre noe bra med mindre vi kan lese dem. Kontrolleren ved hånden kan bare lese sjansene i spenning og ikke noe mindre, for dette skal vi bruke spenningsdelerkrets, med det kan vi utlede motstandsendringen som spenningsendring.
Spenningsdeler er en resistiv krets og er vist i figur. I dette resistive nettverket har vi en konstant motstand og annen variabel motstand. Som vist i figur er R1 her en konstant motstand og R2 er FORCE-sensor som fungerer som en motstand.
Grensens midtpunkt blir tatt til måling. Med R2-endring har vi endring på Vout. Så med dette har vi en spenning som endres med vekten.
Nå er det viktig å merke seg at inngangen som er tatt av kontrolleren for ADC-konvertering er så lav som 50 µAmp. Denne belastningseffekten av motstandsbasert spenningsdeler er viktig da strømmen hentet fra Vout av spenningsdeleren øker feilprosentandelen, for nå trenger vi ikke bekymre oss for belastningseffekt.
Nå når kraften påføres på FORCE SENSOR, endrer spenningen ved skilleark denne pinnen som den er koblet til ADC-kanalen til UNO, vi vil få en annen digital verdi fra ADC til UNO, når kraft på sensoren endres.
Denne ADC digitale verdien er tilpasset pliktforholdet til PWM-signalet, så vi har SERVO posisjonskontroll i forhold til kraft påført på sensoren.
Komponenter
Maskinvare: UNO, strømforsyning (5v), 1000uF kondensator, 100nF kondensator (3 stk), 100KΩ motstand, SERVO MOTOR (SG 90), 220Ω motstand, FSR400 kraft sensor.
Programvare: Atmel studio 6.2 eller aurdino nattlig.
Kretsdiagram og arbeidsforklaring
Det koblingsskjema for servomotorkontroll av kraftføler er vist i figuren nedenfor.
Spenningen over sensoren er ikke helt lineær; det vil være bråkete. For å filtrere ut støyen plasseres kondensatorer over hver motstand i delerkretsen som vist på figuren.
Her skal vi ta spenningen fra skillelinjen (spenning som representerer vekt lineært) og mate den inn i en av ADC-kanalene til Arduino Uno. Etter konvertering skal vi ta den digitale verdien (som representerer vekt) og relatere den til PWM-verdien og gi dette PWM-signalet til SERVO-motoren.
Så med vekt har vi en PWM-verdi som endrer driftsforholdet avhengig av digital verdi. Høyere den digitale verdien, høyere pliktforholdet til PWM. Så med PWM-signal med høyere driftsforhold, bør servoakselen nå helt til høyre eller lengst til venstre i henhold til figuren gitt i innledningen.
Hvis vekten er lavere, vil vi ha lavere PWM-pliktforhold, og i henhold til figuren i innledningen skal servoen nå helt til høyre.
Med dette har vi en SERVO posisjonskontroll etter VEKT eller KRAFT.
For at dette skal skje, må vi etablere noen instruksjoner i programmet, og vi vil snakke om dem i detalj nedenfor.
ARDUINO har seks ADC-kanaler, som vist i figuren. I disse kan en eller alle av dem brukes som innganger for analog spenning. UNO ADC har 10-biters oppløsning (så heltallverdiene fra (0- (2 ^ 10) 1023)). Dette betyr at den vil kartlegge inngangsspenninger mellom 0 og 5 volt til heltall mellom 0 og 1023. Så for hver (5/1024 = 4,9 mV) per enhet.
Her skal vi bruke A0 av UNO. Vi trenger å vite noen få ting.
|
Først og fremst har Arduino Uno ADC-kanalene en standard referanseverdi på 5V. Dette betyr at vi kan gi en maksimal inngangsspenning på 5V for ADC-konvertering på hvilken som helst inngangskanal. Siden noen sensorer gir spenninger fra 0-2,5V, med en 5V referanse får vi mindre nøyaktighet, så vi har en instruksjon som gjør det mulig for oss å endre denne referanseverdien. Så for å endre referanseverdien vi har (“analogReference ();”) For nå lar vi det være.
Som standard får vi den maksimale ADC-oppløsningen på kortet som er 10 bit, denne oppløsningen kan endres ved å bruke instruksjoner (“analogReadResolution (bits);”). Denne oppløsningsendringen kan være nyttig i noen tilfeller. For nå lar vi det være.
Nå hvis de ovennevnte forholdene er satt til standard, kan vi lese verdien fra ADC for kanalen '0' ved direkte å kalle funksjonen "analogRead (pin);", her representerer "pin" pin der vi koblet til analogt signal, i dette tilfellet er det ville være “A0”. Verdien fra ADC kan tas inn i et helt tall som “int SENSORVALUE = analogRead (A0); ”, Ved denne instruksjonen blir verdien etter ADC lagret i heltallet“ SENSORVALUE ”.
PWM til UNO kan oppnås ved hvilken som helst av pinnene som er symbolisert som “~” på PCB-kortet. Det er seks PWM-kanaler i UNO. Vi skal bruke PIN3 for vårt formål.
analogWrite (3, VALUE); |
Fra ovennevnte tilstand kan vi få direkte PWM-signalet ved den tilsvarende pin. Den første parameteren i parentes er å velge pin-nummeret til PWM-signalet. Den andre parameteren er for skriveforhold.
PWM-verdien til Arduino Uno kan endres fra 0 til 255. Med "0" som lavest til "255" som høyest. Med 255 som pliktforhold får vi 5V ved PIN3. Hvis pliktforholdet er gitt som 125, får vi 2,5V ved PIN3.
La oss nå snakke om servomotorkontrollen, Arduino Uno har en funksjon som gjør det mulig for oss å kontrollere servoposisjonen ved bare å gi gradverdien. Si at hvis vi vil at servoen skal være 30, kan vi direkte representere verdien i programmet. SERVO-headerfilen tar seg av alle beregninger av avgiftsforholdet internt. Du kan lære mer om servomotorkontroll med arduino her.
Nå kan sg90 bevege seg fra 0-180 grader, vi har ADC-resultat 0-1024.
Så ADC er omtrent seks ganger SERVO-POSISJONEN. Så ved å dele ADC-resultatet med 6, får vi den omtrentlige SERVO-håndposisjonen. Derfor har vi et PWM-signal hvis arbeidsforhold endres lineært med VEKT eller KRAFT. Dette blir gitt til servomotor, og vi kan styre servomotoren ved hjelp av tvangssensor.