In dit project gaan we een leuk circuit ontwikkelen met Force sensor en Arduino Uno. Dit circuit genereert geluid dat lineair gerelateerd is aan de kracht die op de sensor wordt uitgeoefend. Daarvoor gaan we FORCE-sensor koppelen aan Arduino Uno. In UNO gaan we de 8-bits ADC-functie (analoog naar digitaal conversie) gebruiken om het werk te doen.
Krachtsensor of krachtgevoelige weerstand
Een FORCE-sensor is een transducer die zijn weerstand verandert wanneer er druk op het oppervlak wordt uitgeoefend. FORCE-sensor is verkrijgbaar in verschillende maten en vormen. We gaan een van de goedkopere versies gebruiken omdat we hier niet veel nauwkeurigheid nodig hebben. FSR400 is een van de goedkoopste krachtsensoren op de markt. De afbeelding van FSR400 wordt getoond in onderstaande afbeelding. Ze worden ook wel krachtgevoelige weerstand of FSR genoemd, omdat de weerstand verandert afhankelijk van de kracht of druk die erop wordt uitgeoefend. Wanneer er druk wordt uitgeoefend op deze krachtwaarnemingsweerstand, neemt de weerstand ervan af, dat wil zeggen dat de weerstand omgekeerd evenredig is met de uitgeoefende kracht. Dus als er geen druk op wordt uitgeoefend, zal de weerstand van FSR erg hoog zijn.
Nu is het belangrijk op te merken dat de FSR 400 over de lengte gevoelig is, de kracht of het gewicht moet worden geconcentreerd op het doolhof in het midden van het oog van de sensor, zoals weergegeven in de afbeelding. Als de kracht op verkeerde momenten wordt uitgeoefend, kan het apparaat permanent worden beschadigd.
Een ander belangrijk ding om te weten is dat de sensor stromen met een hoog bereik kan aansturen. Houd dus bij het installeren rekening met de aandrijfstromen. Ook heeft de sensor een krachtlimiet van 10 Newton. We kunnen dus slechts 1 kg gewicht toepassen. Als er gewichten hoger dan 1 kg worden toegepast, kan de sensor enkele afwijkingen vertonen. Als het meer dan 3 kg is toegenomen. de sensor kan permanent worden beschadigd.
Zoals eerder verteld wordt deze sensor gebruikt om de drukveranderingen waar te nemen. Dus wanneer het gewicht bovenop de FORCE-sensor wordt aangebracht, verandert de weerstand drastisch. De weerstand van FS400 over gewicht wordt weergegeven in onderstaande grafiek,
Zoals getoond in bovenstaande afbeelding, neemt de weerstand tussen de twee contacten van de sensor af met het gewicht of neemt de geleiding tussen twee contacten van de sensor toe. De weerstand van een zuivere geleider wordt gegeven door:
Waar, p- Weerstandsvermogen van geleider
l = lengte van geleider
A = Gebied van geleider.
Beschouw nu een geleider met weerstand "R", als er wat druk wordt uitgeoefend op de geleider, neemt het oppervlak op de geleider af en neemt de lengte van de geleider toe als gevolg van druk. Dus volgens formule zou de weerstand van de geleider moeten toenemen, omdat de weerstand R omgekeerd evenredig is met het oppervlak en ook recht evenredig met lengte l.
Dus hiermee neemt voor een geleider onder druk of gewicht de weerstand van de geleider toe. Maar deze verandering is klein in vergelijking met de algehele weerstand. Voor een aanzienlijke verandering worden veel geleiders op elkaar gestapeld. Dit is wat er gebeurt in de krachtsensoren die in de bovenstaande afbeelding worden getoond. Als je goed kijkt, zie je veel lijnen in de sensor. Elk van deze lijnen vertegenwoordigt een geleider. Gevoeligheid van de sensor is in geleidernummers.
Maar in dit geval neemt de weerstand af met de druk omdat het materiaal dat hier wordt gebruikt geen zuivere geleider is. De FSR zijn hier robuuste polymere dikke film (PTF) -apparaten. Dit zijn dus geen pure apparaten van geleidermateriaal. Deze zijn gemaakt van een materiaal dat een afname van de weerstand vertoont met toenemende kracht die op het oppervlak van de sensor wordt uitgeoefend. Dit materiaal vertoont kenmerken zoals weergegeven in de grafiek van FSR.
Deze verandering in weerstand kan geen goed doen tenzij we ze kunnen lezen. De controller bij de hand kan alleen de kansen in spanning aflezen en niets minder, hiervoor gaan we een spanningsdelercircuit gebruiken, waarmee we de weerstandsverandering kunnen afleiden als spanningsverandering.
Spanningsdeler is een resistief circuit en wordt weergegeven in de afbeelding. In dit resistieve netwerk hebben we een constante weerstand en een andere variabele weerstand. Zoals weergegeven in de afbeelding, is R1 hier een constante weerstand en is R2 een FORCE-sensor die als weerstand fungeert. Het middelpunt van de tak wordt gemeten. Met R2-verandering hebben we verandering bij Vout. Hiermee hebben we dus een spanningsverandering met het gewicht.
Het belangrijkste om hier op te merken is dat de input van de controller voor ADC-conversie zo laag is als 50 µAmp. Dit belastingseffect van een op weerstand gebaseerde spanningsdeler is belangrijk omdat de stroom die wordt getrokken uit Vuit van de spanningsdeler het foutpercentage verhoogt, voorlopig hoeven we ons geen zorgen te maken over het laadeffect.
Hoe een FSR-sensor te controleren
De krachtmeetweerstand kan worden getest met een multimeter. Verbind de twee pinnen van de FSR-sensor met de multimeter zonder enige kracht uit te oefenen en controleer de weerstandswaarde, deze zal erg hoog zijn. Oefen vervolgens wat kracht uit op het oppervlak en zie de afname van de weerstandswaarde.
Toepassingen van FSR-sensor
Krachtgevoelige weerstanden worden voornamelijk gebruikt om drukgevoelige "knoppen" te creëren. Ze worden gebruikt op verschillende gebieden, zoals auto-bezettingssensoren, resistieve touchpads, robotvingertoppen, kunstmatige ledematen, toetsenborden, voetpronatiesystemen, muziekinstrumenten, ingebedde elektronica, test- en meetapparatuur, OEM-ontwikkelingskit en draagbare elektronica, sport. Ze worden ook gebruikt in Augmented Reality-systemen en om mobiele interactie te verbeteren.
Componenten vereist
Hardware: Arduino Uno, voeding (5v), 1000 uF condensator, 100nF condensator (3 stuks), 100KΩ weerstand, zoemer, 220Ω weerstand, FSR400 krachtsensor.
SOFTWARE: Atmel studio 6.2 of Aurdino nightly
Schakelschema en werkuitleg
De circuitverbinding voor het koppelen van Force Sensing Resistor met Arduino wordt weergegeven in het onderstaande diagram.
De spanning over de sensor is niet volledig lineair; het zal luidruchtig zijn. Om de ruis eruit te filteren, worden condensatoren over elke weerstand in het delercircuit geplaatst, zoals weergegeven in de afbeelding.
Hier gaan we de spanning nemen die door de verdeler wordt geleverd (spanning die het gewicht lineair vertegenwoordigt) en deze in een van de ADC-kanalen van UNO voeren. Na de conversie gaan we die digitale waarde (die het gewicht vertegenwoordigt) nemen en deze relateren aan de PWM-waarde voor het aansturen van de zoemer.
Dus met het gewicht hebben we een PWM-waarde die de duty-ratio verandert afhankelijk van de digitale waarde. Hoe hoger de digitale waarde, hoe hoger de duty-ratio van PWM, dus hoe hoger de ruis die door de zoemer wordt gegenereerd. Dus we relateerden gewicht aan geluid.
Voordat we verder gaan, laten we het hebben over ADC van Arduino Uno. ARDUINO heeft zes ADC-kanalen, zoals weergegeven in de afbeelding. Daarin kunnen ze allemaal worden gebruikt als ingangen voor analoge spanning. De UNO ADC heeft een resolutie van 10 bits (dus de gehele waarden van (0- (2 ^ 10) 1023)). Dit betekent dat het ingangsspanningen tussen 0 en 5 volt zal omzetten in gehele waarden tussen 0 en 1023. Dus voor elke (5/1024 = 4,9 mV) per eenheid.
Hier gaan we A0 van UNO gebruiken.
We moeten een paar dingen weten.
|
Allereerst hebben de UNO ADC-kanalen een standaard referentiewaarde van 5V. Dit betekent dat we een maximale ingangsspanning van 5V kunnen geven voor ADC-conversie op elk ingangskanaal. Aangezien sommige sensoren spanningen leveren van 0-2,5V, krijgen we met een 5V-referentie een kleinere nauwkeurigheid, dus we hebben een instructie waarmee we deze referentiewaarde kunnen wijzigen. Dus voor het wijzigen van de referentiewaarde hebben we (“analogReference ();”) Voorlopig laten we het zoals.
Standaard krijgen we de maximale ADC-resolutie van het bord, die 10 bits is, deze resolutie kan worden gewijzigd met behulp van instructies ("analogReadResolution (bits);"). Deze resolutiewijziging kan in sommige gevallen van pas komen. Voor nu laten we het zo.
Als de bovenstaande voorwaarden nu op de standaard zijn ingesteld, kunnen we de waarde van ADC van kanaal '0' lezen door de functie "analogRead (pin);" direct aan te roepen, hier staat "pin" voor pin waar we het analoge signaal hebben aangesloten, in dit geval zou "A0" zijn. De waarde van ADC kan worden opgevat in een geheel getal als “int SENSORVALUE = analogRead (A0); ”, Door deze instructie wordt de waarde na ADC opgeslagen in het gehele getal“ SENSORVALUE ”.
De PWM van Arduino Uno kan worden bereikt op elk van de pinnen die op de printplaat worden gesymboliseerd als "~". Er zijn zes PWM-kanalen in UNO. We gaan PIN3 gebruiken voor ons doel.
analogWrite (3, VALUE); |
Van bovenaf kunnen we het PWM-signaal direct op de bijbehorende pin krijgen. De eerste parameter tussen haakjes is voor het kiezen van het pinnummer van het PWM-signaal. De tweede parameter is voor de schrijfverhoudingen.
De PWM-waarde van UNO kan worden gewijzigd van 0 tot 255. Met "0" als laagste tot "255" als hoogste. Met 255 als duty-ratio krijgen we 5V bij PIN3. Als de duty-ratio wordt gegeven als 125, krijgen we 2,5 V bij PIN3.
Nu hebben we een waarde van 0-1024 als ADC-uitvoer en 0-255 als PWM-duty-ratio. ADC is dus ongeveer vier keer de PWM-ratio. Dus door het ADC-resultaat door 4 te delen, krijgen we de geschatte duty-ratio.
Daarmee hebben we een PWM-signaal waarvan de duty-ratio lineair verandert met het gewicht. Omdat dit aan de zoemer wordt gegeven, hebben we een geluidsgenerator afhankelijk van het gewicht.