Analoge meting

Hardware die niet past in bovenstaande onderwerpen
Berichten: 4
Geregistreerd: 07 Jan 2013, 14:42

Analoge meting

Berichtdoor keeshelpt » 10 Jan 2013, 13:57

Na de voorstelronde gelijk maar een vraag.

We zijn een info display aan't maken/bedenken voor op de motorfiets.
In de versn.bak zitten 3 verbreekcontacten welke binair de juiste versnelling aangeven. We hebben dit gesimuleerd en kunnen de juiste versnelling nu weergeven op het display. Da's dus gelukt :D

De volgende fase is het benzine nivo.
Volgens het motorfietsschema zit er een variable weerstand in de tank. Vol is hij 3 Ohm en leeg is hij 73 Ohm. We hebben een simulatie gedaan met een potentiometer op 5V, gnd en A0
Dit ging aardig maar er kwam wat rook uit de potmeter als hij te lang in de hoek staat. Op zich niet vreemd want de weerstand is 0 dus de stroom is dan maximaal. Wat is eigenlijk de max aan stroom die er zo kan gaan lopen?
Toch zie ik op internet diverse van zulke voorbeelden. Wat doen we verkeerd? Hebben we serieweerstanden nodig?
Het volgende probleem is dat de aangeboden weerstand in de tank maar 2 aansluitingen heeft. 1 aan het frame en 1 (loper) op een connector in het dashboard.
Kan iemand een helpen met een schema en een stukje code om 3 Ohm-73 Ohm om te meten (of de spanning die er over staat)

Advertisement

Berichten: 29
Geregistreerd: 01 Dec 2012, 18:34

Re: Analoge meting

Berichtdoor h.lith » 10 Jan 2013, 17:55

Hoi Kees, je hebt een potmeter nodig die wat meer vermogen kan verdragen, lees een zwaardere , misschien iets van 0 tot 100 ohm.
De potmeter die jij gebruikt is in elk geval ongeschikt voor je testen.
Haal de potmeter er uit, en sluit de schakeling kort (of iets van 3 ohm), en de meter moet dan volledig in de hoek slaan.
Schema even hier plaatsen lijkt mij ook wel leuk, alhoewel dit natturlijk een microcontroler site is, oeps :roll:
Groet, Henk

Berichten: 157
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Analoge meting

Berichtdoor FPCUser » 10 Jan 2013, 21:42

Na enig gereken en uitproberen kwam ik tot het volgende.
Ik ben uitgegaan van een Arduino Uno met een ATmega168 of ATmega328, en een stabiele 5 Volt voeding.

De weerstandssensor van de tank met een serieweerstand van 270 ohm aansluiten op +5 V en GND. De spanning over de sensor aansluiten op een analoge ingang.

Bij een tanksensorweerstand van 3 ohm loopt er een stroom van 5 / (270 + 3) A.
De spanning over de sensor is dan 3 * 5/(270 + 3) = 0.054 V

En bij een weerstand van 73 ohm is dat 73 * 5 / ( 270 + 73) = 1.064 V.

Ik heb deze waarden zo gekozen omdat 270 ohm een standaard waarde is en dat je maximale spanning net onder de 1.1 V blijft. Normaal kan je op een analoge ingang een spanning tussen de 0 V en 5 V meten. Je krijgt dan waarden tussen de 0 en 1023 terug.
Zet je in je programma de opdracht analogReference(INTERNAL), dan kan je spanningen meten tussen de 0 V en 1.1 V met hetzelfde waardebereik van 0-1023. Heb je een ander Arduino dan bovengenoemd dan is de referentiespanning ook anders, dat is wel op te zoeken.

Met mijn testweerstanden van 2.6 Ohm en 72 Ohm als tanksensor kreeg ik de waarde 45 en 998 terug. In het ideale geval dat de weerstandswaarde van je sensor lineair is met de tankinhoud en wil je een waarde tussen de 0 en 100 hebben, dan kan je de opdracht
waarde = map(waarde, 45, 998, 0, 100)
toepassen.

Door te proberen met de echte sensor krijg je enigszins andere waarden. Verander eventueel de serieweerstand van 270 Ohm zodat je niet boven de 1.1 V komt!

Let op:
Als je de overige analoge ingangen ook gebruikt, en je past analogReference(INTERNAL) toe, deze ook een spanningsbereik van 0 tot 1.1 V hebben, en geen 5 V.

Hierbij mijn test sketch, dan kom je er wel uit.

Code: Alles selecteren
int ingangsPin = 0;
int waarde = 0;
int percentage = 0;

void setup() {
  analogReference(INTERNAL); 
  Serial.begin(9600);
}

void loop() {
  waarde = analogRead(ingangsPin);
  percentage = map(waarde, 45, 998, 0, 100);
  Serial.println(waarde);
//  Serial.println(percentage);
  delay(500);
}


Henk

Berichten: 4
Geregistreerd: 07 Jan 2013, 14:42

Re: Analoge meting

Berichtdoor keeshelpt » 11 Jan 2013, 14:18

Henk,

Dank voor de uitgebreide uitleg. Geweldig dat iemand zo wil meedenken.
We knutselen nu op een Uno, maar heb http://dx.com/p/nano-v3-0-avr-atmega328 ... ino-118037 besteld.
Is het bij de nano ook 1,1V ?
Begrijp ik goed dat analogReference voor alle OF geen enkele ingangen is? Ik kan dus niet een enkele ingang hiermee beïnvloeden?
De 270 Ohm kan 1/4W zijn?
Kan ik met waarde=map(waarde,45,998,0,21) het brandstofnivo laten berekenen tussen 0 en 21 liter?

Ik heb ook nog een variabele weerstand van de oiltemp. van 44k tot 70 Ohm = 3 tot 150gr. Zet ik daar ook nog een weerstand voor? En is het meetbaar op 1,1V of moet ik voor beide metingen naar 5V met andere serieweerstanden?

Eigenlijk alleen maar vragen dus.
Alvast bedankt.
Kees

Berichten: 157
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Analoge meting

Berichtdoor FPCUser » 11 Jan 2013, 19:04

Hierbij alvast op een paar vragen van je een antwoord, in willekeurige volgorde!

Op versie 3 van de nano zit de ATmega328, en beschikt over een AREF pin, dus ja, is ook 1.1.Volt.

Vermogen weerstand van 270 Ohm. Deze staat in serie met je tankweerstand en het geheel is aangesloten op 5 V.
Wet van Ohm: R = U / I dat geeft I = U / R
Vermogen: P = U * I , voor I geldt bovenstaande, we krijgen dan
P = U * U / R

In het ene geval P = 5 * 5 / (270 + 3) = 0.091 W
Ander geval P = 5 * 5 / (270 + 73) = 0.072 W

Dit is het vermogen van de gehele keten, de voorschakel weerstand krijgt daar maar een deel van. Een weerstand van ¼ W is dus goed.

De analogReference beïnvloed naar mijn weten ALLE analoge ingangen, niet een enkele.
Je kunt de spanning meten, na de digitale I/O pen 13 zit de GND en daarnaast AREF op een Arduino UNO.
Met de opdracht analogReference(EXTERNAL) kan je hierop ook zelf een referentie spanning zetten, maar niet hoger gaan dan 5 V.

Met de opdracht
map(waarde, oude minimum, oude maximum, nieuwe minimum, nieuwe maximum)
kan je zelf het brandstofniveau kiezen, in jou geval tussen de 0 en 21 liter.
De waarden 45 en 998 voor resp. oude minimum en oude maximum waren de waarden die ik kreeg bij het testen van mijn proefschakeling. Bij jou in het echt zullen de waarden anders zijn.

Je kunt met andere voorschakelweerstanden ook op 5 V niveau meten. Je maximale waarde zal dan altijd onder de 1023 liggen i.v.m. spanningval over deze weerstand.

Tenslotte je olietemperatuur. Weer een ingangsspanning van maximaal 1.1 Volt en aangesloten op 5 V voeding. Je kunt ruwweg zeggen dat over de voorschakelweerstand 4 volt komt te staan en over je temperatuurvoeler 1 V. Een verhouding van 4 op 1. In een serieketen is de stroom gelijk, dan moet de voorschakelweerstand ruwweg 4 maal zo groot zijn als de weerstand van je voeler. Vier maal 44k is 176k. In de weerstandsreeks wordt dit dan 180k.

Theoretisch wordt het dan als volgt:
Stroom door je voorschakelweerstand en temp. voeler I = U/R = 5 / (180000 + 44000)
Spanning over je voeler U = I*R = 5 / (180000 + 44000) * 44000 = 0.982 V.

Is je temp.voeler 70 ohm dan is dat vergeleken bij de 180 k praktisch GND, dus 0 V.

Mijn vraag.
Heb je ook een weerstand/temperatuur kromme van deze voeler? Gezien het grote weerstands bereik vergeleken met de temperatuur lijkt mij deze niet lineair te zijn.

Berichten: 4
Geregistreerd: 07 Jan 2013, 14:42

Re: Analoge meting

Berichtdoor keeshelpt » 14 Jan 2013, 09:17

Ik heb de info uit https://www.google.nl/url?sa=t&rct=j&q= ... p0MaEJ8LLg maar weet niet hoe ik hier een bijlage kan uploaden. Op pag 9 staat de waarde voor een volle en lege tank.
Op pag 4/5 staat een tabel met waarden voor de tempsensor. Hij is idd niet lineair. Weet je hier misschien ook een oplossing voor misschien? Het belangrijkste is dat hij rond de bedrijfstemp een beetje klopt. De rest is spielerij, maar wel leuk als het ongeveer klopt.

Kun je nog iets meer uitleg geven over het aref pennetje en analogReference(EXTERNAL)

Dank voor de hulp.

Terug naar Overige hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten