Arduino - spanning meten

In deze handleiding ontdekken we hoe u met een Arduino spanning kunt meten van 0V tot 25V met behulp van een spanningssensor. We behandelen in detail:

Arduino voltage sensor

Hardware benodigd

1×Arduino UNO of Genuino UNO
1×USB 2.0 kabel type A/B
1×spanningssensor
1×jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Spanningssensor

Een spanningssensor is een vooraf samengestelde spanningsdeler die gebruikmaakt van precisieweerstanden voor het vereenvoudigen van spanningsmetingen. Hij bestaat uit twee weerstanden: 30 kΩ en 7,5 kΩ. Met een referentiespanning van 5V voor de ADC (analog-to-digital converter) kan de sensor spanning meten van 0 tot 25V DC. Wanneer de referentiespanning van de ADC 3,3V is, meet de sensor spanningen van 0 tot 16,5V DC.

Pinout

Een spanningssensor heeft twee sets pinnen:

  • Ingangsinterface (verbonden met de meetpunten van de spanning):
    • VCC pin: dit is de positieve pin. Sluit deze aan op het punt met de hogere spanning.
    • GND pin: dit is de negatieve pin. Sluit deze aan op het punt met de lagere spanning.
  • Uitgangsinterface (verbonden met de Arduino):
    • Vout pin (S): dit is de signaalpin. Verbind deze met een analoge pin op de Arduino.
    • NC pin (+): deze wordt niet gebruikt. Laat deze onverbonden.
    • GND pin (-): dit is de aarde/ground pin. Verbind deze met de GND (0V) van de Arduino.
    Voltage Pinout
    image source: diyables.io

Aansluitschema

Arduino spanningssensor Aansluitschema

This image is created using Fritzing. Click to enlarge image

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-measure-voltage */ // define analog input #define ANALOG_IN_PIN A0 #define REF_VOLTAGE 5.0 #define ADC_RESOLUTION 1024.0 #define R1 30000.0 // resistor values in voltage sensor (in ohms) #define R2 7500.0 // resistor values in voltage sensor (in ohms) void setup() { Serial.begin(9600); } void loop() { // read the analog input int adc_value = analogRead(ANALOG_IN_PIN); // determine voltage at adc input float voltage_adc = ((float)adc_value * REF_VOLTAGE) / ADC_RESOLUTION; // calculate voltage at the sensor input float voltage_in = voltage_adc * (R1 + R2) / R2; // print results to serial monitor to 2 decimal places Serial.print("Measured Voltage = "); Serial.println(voltage_in, 2); delay(500); }

Snelle Stappen

  • Verbind de Arduino met de spanningssensor
  • Verbind de Arduino met de pc via de USB-kabel
  • Open de Arduino IDE, selecteer de juiste board en poort
  • Kopieer de bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Test door 5V en 3,3V op de Arduino te meten
  • Bekijk het resultaat in de Seriële Monitor.
COM6
Send
Measured Voltage = 4.96 Measured Voltage = 4.96 Measured Voltage = 4.96 Measured Voltage = 4.96 Measured Voltage = 3.39 Measured Voltage = 3.39 Measured Voltage = 3.39 Measured Voltage = 3.39
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Het kan voorkomen dat het meetresultaat niet klopt of aanzienlijk afwijkt van de werkelijke waarde. Geef hiervoor niet de spanningssensormodule de schuld. De gemeten waarde kan afwijken omdat de standaard referentiespanning 5V is, die onstabiel kan zijn en afhankelijk van de voeding. Hier zijn enkele oplossingen voor dit probleem:

  • Gebruik een voeding die voldoende spanning levert voor de Arduino. Controleer dit met een voltmeter door te meten of de 5V pin op de Arduino daadwerkelijk 5V levert.
  • Gebruik een externe referentiespanning van 3,3V. Met deze methode kunt u echter alleen spanningen meten van 0 tot 16,5V DC.

Spanning meten met een 3,3V referentie

Voor deze methode moet u zowel de hardware als de code aanpassen. Verbind voor de hardware de AREF pin van de Arduino met 3,3V, zoals te zien is in het onderstaande schema.

Arduino meet spanning Aansluitschema

This image is created using Fritzing. Click to enlarge image

Gebruik vervolgens de onderstaande code:

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-measure-voltage */ #define ANALOG_IN_PIN A0 #define REF_VOLTAGE 3.3 #define ADC_RESOLUTION 1024.0 #define R1 30000.0 // resistor values in voltage sensor (in ohms) #define R2 7500.0 // resistor values in voltage sensor (in ohms) void setup() { Serial.begin(9600); analogReference(EXTERNAL); } void loop() { // read the analog input int adc_value = analogRead(ANALOG_IN_PIN); // determine voltage at adc input float voltage_adc = ((float)adc_value * REF_VOLTAGE) / ADC_RESOLUTION; // calculate voltage at the sensor input float voltage_in = voltage_adc * (R1 + R2) / R2; // print results to serial monitor to 2 decimal places Serial.print("Measured Voltage = "); Serial.println(voltage_in, 2); delay(500); }

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap bij het meten van spanning met Arduino.

Functiereferenties

Gerelateerde Tutorials

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!