Arduino sensor analog readout moeilijkheden

Arduino specifieke Software
Berichten: 3
Geregistreerd: 17 Jan 2016, 16:12

Arduino sensor analog readout moeilijkheden

Berichtdoor vrolijkevent » 17 Jan 2016, 16:21

Gegroet beste lezers!

Ik ben momenteel bezig met een project die gebruik maakt van de GBoard 800 (ATMEGA 328) input-output (3.3V) en gebruik maakt van een sensor van 0-5V.
Nou kamp ik momenteel met een probleem...

Wanneer ik de bitwaarde vanuit de analogRead(sensorPin) oproep, opsla in een een float variable is er nog niks aan de hand, hij laat een waarde van 83.00 zien, so far so good!
maar wanneer ik probeer deze waarde om te zetten naar een voltage krijg ik steeds de waarde 0.00V
Waarschijnlijk is het een stom foutje die ik over het hoofd blijf zien, maar zou graag jullie inzicht er bij in betrekken (het word in ieder geval zeer gewaardeerd!;) en scheelt een hoop haren van me hoofd!

Want zoals de ATMEGA 328 al zelf aangeeft word er een voltage geregistreert met een bit-waarde van 83.00, heb alles in floats gedaan en er zou een waarde van 0,267V moeten uitkomen...
dit gebeurd echter niet

Hebben jullie verder wellicht nog tips voor het gebruiken van een 5V sensor met een 3.3V IO-board? kan daar een voltage divider voor worden gebruikt of heb ik daar iets anders voor nodig?
heb het nu namelijk direct op elkaar gekoppeld (omdat voltage nooit hoger dan 3.3V gaat worden in de huidige configuratie, maar de range is nu dus wel gelimiteerd;)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Code:
#include <SoftwareSerial.h>

#define SENSOR_PIN A1 // Arduino pin tied to echo pin on the ultrasonic sensor.

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Sensor is ready for taking measurements");
}

void loop() {
// put your main code here, to run repeatedly:
get_Sonar_Reading();
delay(1000);
}

int get_Sonar_Reading() {
float reading_ = analogRead(SENSOR_PIN);
float distance = conversion2cm(reading_);
Serial.print(F("Voltage: "));
Serial.print(voltage);
Serial.println(F(" V"));
return reading_;
}

int conversion2cm(float sonarReading) {
float bit_value = sonarReading;
Serial.print("Bit_value: ");
Serial.println(bit_value);
float distance = bit_value * 3.3 / 1024.0;
return voltage;
}

Serial Monitor:
Bit_value: 83.00
Distance: 0.00mm

Advertisement

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino sensor analog readout moeilijkheden

Berichtdoor shooter » 17 Jan 2016, 18:09

ja leuk, en wat voor sonar gebruik je?
verder schrijf je in conversion2cm float distance=.....
en de return is voltage maar die wordt helemaal niet berekend.
geintje.


de meeste sonars zijn trouwens met een tijdpuls en niet met een analoge waarde.
heb je gezien dat je A1 gebruikt en niet A0?
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 17 Jan 2016, 16:12

Re: Arduino sensor analog readout moeilijkheden

Berichtdoor vrolijkevent » 17 Jan 2016, 18:22

shooter schreef:ja leuk, en wat voor sonar gebruik je?
verder schrijf je in conversion2cm float distance=.....
en de return is voltage maar die wordt helemaal niet berekend.
geintje.


de meeste sonars zijn trouwens met een tijdpuls en niet met een analoge waarde.
heb je gezien dat je A1 gebruikt en niet A0?


F500 ultrasonic sensor van Dingtek, hahaha klopt had klein beetje aangepast sorry....
Wat bedoel je daarmee met AO? had toch SENSOR_PIN A1 gesteld? ook bij de AnalogRead(A1)?
want hij krijgt duidelijk een bitwaarde eruit, alleen bij de calculatie van voltage gaat het mis :oops:

Wat bedoelde je precies met tijdpuls? dat hij even kort zijn analoge waarde laat zien en zich daarna weer uitzet? want ik krijg wel gewoon constant 83.00 als seriele output

thanks voor de snelle reactie btw;)

Realcode:
#include <SoftwareSerial.h>

#define SENSOR_PIN A1 // Arduino pin tied to echo pin on the ultrasonic sensor.

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
while(true){
get_Sonar_Reading();
delay(1000);
}
}

int get_Sonar_Reading() {
float reading_ = analogRead(SENSOR_PIN);
float voltage = conversion2voltage(reading_);
Serial.print("voltage: ");
Serial.print(voltage);
Serial.println("[V]");
return reading_;
}

int conversion2voltage(float sonarReading) {
float bit_value = sonarReading;
Serial.print("Bit_value: ");
Serial.println(bit_value);
float voltage = bit_value * 5.0 / 1023.0;
return voltage;
}

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino sensor analog readout moeilijkheden

Berichtdoor shooter » 17 Jan 2016, 20:16

je doet nogal ingewikkeld maar allee


[code2=]#include <SoftwareSerial.h>

#define SENSOR_PIN A1 // Arduino pin tied to dit is dus geen echo pin maar gewoon een uitgang. echo pin on the ultrasonic sensor.
// de voeding van de sensor >10 Volt zijn, de uitgang is 0-6 Volt dus twee weerstanden zijn nodig om niet boven de 5 Volt uit te komen.

//


void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
while(true){
get_Sonar_Reading();
delay(1000);
}
}

void get_Sonar_Reading() {
int reading = analogRead(SENSOR_PIN);// die analoge waarde is een integer geen float
Serial.println(reading);
float voltage = float(reading) * 5.0 / 1023.0;
Serial.print("voltage: ");
Serial.print(voltage);
Serial.println("[V]");


}[/code2]
ik heb het even ingekort.
probeer dit maar eens.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 17 Jan 2016, 16:12

Re: Arduino sensor analog readout moeilijkheden

Berichtdoor vrolijkevent » 17 Jan 2016, 22:05

Ik zag het inderdaad al, kom zelf van een python achtergrond dus heb nog een beetje moeite met me classes te defineren;p bleek dus een fout te zijn in de declaratie daarin was int->float zijn.
Maar je kan dus met een voltage divider het voltage naar een gewenst spectrum halen? van 0-5 analog output tot 0-3.3V? ik zat te denken aan R1=100ohm en R2=200ohm en dan de tussen liggende output naar me analoge
pin laten gaan, zie jij dit werken?:)

Thanks voor de tip anyways;)

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Arduino sensor analog readout moeilijkheden

Berichtdoor shooter » 17 Jan 2016, 23:17

dan krijg je 200/300*6Volt=4 Volt max is 80%van 5Volt dus 1024*0.8 =819.
ofwel je berekening wordt voltage=6/819 * reading.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 82 gasten