Forum: Mikrocontroller und Digitale Elektronik 10k Poti mit Arduino


von 10k Poti mit Arduino (Gast)


Lesenswert?

Moin,
ich würde gerne den Wert eines 10k Poti mit einem Arduino einlesen. 
Leider funktioniert das nur bedingt.

Zunächst einmal verwende ich ein 5 V Schaltnetzteil von Meanwell und 
versorge damit über den VIN-Pin meinen Arduino. Die 5 V wollte ich auch 
dem Poti bereitstellen. Wenn ich den Poti jedoch betreibe erscheint z.B. 
bei der hälfte statt 1023/2 = 511 der Wert 800. Wenn ich den Poti direkt 
am 5V Pin vom Arduino anschließe, läuft alles wunderbar. Jedoch wollte 
ich die 5 V überall auf meiner Platine über das Netzteil zur Verfügung 
stellen und eigentlich müsste dann am Arduino Pin auch mein Wert 2,5V 
über den Poti ankommen, auch wenn von Extern mit 5V versorgt.  Oder irre 
ich mich?

--
Betreff korrigiert
-rufus

: Bearbeitet durch User
von Nobody (Gast)


Lesenswert?

Und hoffentlich richtig angeschlossen......

+5V - Abgriff -  Masse

von 10k Poti mit Arduino (Gast)


Lesenswert?

V+ und V- (5V Netzteil) direkt an der Arduni VIN und GND. Vom Netzteil 
V+ und V- außerdem direkt auf die Protoplatine. Aber ich bekomme immer 
den Wert 800 statt 511. Wenn ich den Poti am 5V Pin des Arduino 
anschließe, geht es ...

von Marcel (Gast)


Lesenswert?

Vin geht an einen 5V Festspannungsregler. Der erwartet natürlich Vin > 
Vout und da du mit 5V rein gehst kommen <5V raus. Angenommen du nutzt 
Vdd als Vref für den ADC und die externen 5V für das Poti sind alle ADC 
Werte höher als angenommen, da Vref niedriger ist als du annimmst.

Die externen 5V kommen an den 5V Pin des Arduino und nicht Vin.

von Stefan F. (Gast)


Lesenswert?

10k Poti mit Arduino schrieb:
> Zunächst einmal verwende ich ein 5 V Schaltnetzteil von Meanwell und
> versorge damit über den VIN-Pin meinen Arduino.

Dort werden aber mindestens 7V benötigt.

> Wenn ich den Poti jedoch betreibe erscheint z.B.
> bei der hälfte statt 1023/2 = 511 der Wert 800

Das ist logisch, denn dein Mikrocontroller bekommt zu wenig 
Versorgungsspannung, nämlich ca. 3V. Deswegen sind die Messwerte höher 
als erwartet.

3V / 1024 = 3mV
2,5V / 3mV = 833  -> Passt ungefähr

Außerdem darf die Spannung am analogen Eingang nie höher sein, als die 
Versorgungsspannung des Mikrocontrollers.

Lösungsvorschlag:

a) Verwende ein Netzteil mit mindestens 7V an Vin. Außerdem sol das Poti 
an GND und 5V angeschlossen erden, nicht ans Netzteil.

b) Schließe das Netzteil stattdessen an den +5V Pin an

von Nobody (Gast)


Lesenswert?

Wollte dich jetzt nicht veräppeln.

Was hast du denn für einen Arduino ?


Wenn es einer mit 3,3 V ist dann würde der Wert nämlich
passen.Bei VCC 3,3V wären 2,5V ungefähr der Wert 800.

Eingang richtig konfiguriert....ach ne dann würde der Fehler nicht
auftauchen, wenn du das vom Board direkt versorgst.

Darum messe mal deine Spannung am RAW Eingang bzw VCC.....

von Nobody (Gast)


Lesenswert?

Zu langsam geschrieben......:)

von 10k Poti mit Arduino (Gast)


Lesenswert?

Ok, V+ an 5V Anschluss vom Arduino geklemmt und an das Poti. 
FUnktioniert trotzdem nicht

von 10k Poti mit Arduino (Gast)


Lesenswert?

Den 3,3 V Anschluss verwende ich nur für den Temperatursensor in 
Kombination mit VREF, damit der Wert etwas genauer ist  ... Arduino Uno 
R3

von Stefan F. (Gast)


Lesenswert?

10k Poti mit Arduino schrieb:
> Ok, V+ an 5V Anschluss vom Arduino geklemmt und an das Poti.
> FUnktioniert trotzdem nicht

Welche Spannungen misst du am 5V Pin und am analogen Eingang?
Zeige auch deinen Quelltext, da könnte nämlich auch ein Fehler sein.

von 10k Poti mit Arduino (Gast)


Lesenswert?

5,01V

von Stefan F. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Welche Spannungen misst du am 5V Pin und am analogen Eingang?

5,1V ist keine Antwort auf die Frage.

von 10k Poti mit Arduino (Gast)


Lesenswert?

UNd an AREF 3,3

von Stefan F. (Gast)


Lesenswert?

10k Poti mit Arduino schrieb:
> UNd an AREF 3,3

Aha. Dann müsste dein Messwert jetzt 1023 (nicht 800) sein. Denn du hast 
eine Referenz-Spannung von 3,3V, das wäre die maximal messbare Spannung.

Wo kommen die 3,3V denn her? Wenn dein Mikrocontroller mit 5V versorgt 
wird, muss da irgendwo noch eine 3,3V Quelle sein.

Welchen Arduino verwendest du?
Arduino Uno R3 wird es wohl kaum sein, denn der hat mit 3,3V nichts zu 
tun.

von 10k Poti mit Arduino (Gast)


Lesenswert?

Hab das Problem gefunden, aber noch keine Lösung. Ich verwende ja für 
meinen Thermistor 3,3V. Von den 3,3V geht ein Strang auf AREF. Das war 
ein Lösungsvorschlag von der Adafruit-Webseite, um die Genauigkeit zu 
erhöhen. Schließe ich 5V an VREF funktioniert es. Jetzt bleibt die 
Frage, wenn ich an VREF nichts anschliesse, wieso es dann nicht geht. 
Muss ich an VREF stets eine Spannungsquelle anschließen, wenn ich andere 
Bauteile von extern betreibe?

von Stefan F. (Gast)


Lesenswert?

10k Poti mit Arduino schrieb:
> Ich verwende ja für meinen Thermistor 3,3V.

Zeige deinen Schaltplan und den Quelltext. benenne alle verwendeten 
Bauteile. Ich habe keine Lust mehr, dir jedes relevante Detail einzeln 
aus der Nase zu ziehen - vor allem wenn die Wahrheiten erst kommen, 
nachdem ich bewiesen habe, dass deine Infos falsch/unvollständig sind.

von 10k Poti mit Arduino (Gast)


Lesenswert?

Schaltplan war dieser hier: 
https://learn.adafruit.com/thermistor/using-a-thermistor

Da ich an VREF jedoch 3.3 V angehängt habe, bekam ich beim Poti den Wert 
800. Ich werde einfach die 5V verwenden statt 3.3V. Die Messfehler beim 
Thermistor beziehen sich eher auf die Versorgung per USB.

von Stefan F. (Gast)


Lesenswert?

Das ist kein Schaltplan, vor allem nicht deiner.
Der Quelltext fehlt immer noch.

Zwinge uns nicht dazu, Scheiße zu raten!

von Εrnst B. (ernst)


Lesenswert?

10k Poti mit Arduino schrieb:
> Ich werde einfach die 5V verwenden statt 3.3V.

Pack dein Poti einfach zwischen Aref und GND. Dann ist es egal, wie 
deine Referenzsspannung konfiguriert ist und ob deine 
Versorgungsspannung schwankt, du kannst immer aus dem ADC-Wert auf die 
Poti-Stellung schließen.

von Stefan F. (Gast)


Lesenswert?

Εrnst B. schrieb:
> Pack dein Poti einfach zwischen Aref und GND. Dann ist es egal, wie
> deine Referenzsspannung konfiguriert ist

nö

Wenn er die Aref intern erzeugt, darf er sie nicht extern belasten. 
Deswegen sind Schaltplan und Quelltext wichtig.

von 10k Poti mit Arduino (Gast)


Lesenswert?

1
// 3-Pin Ventilator
2
const int motorPin_Fan1 = 3;
3
int speed_Fan1; //Variable to store Speed, by defaul 0 PWM
4
int flag_Fan1;
5
const int potiPin_Fan1 = A2;
6
const int tachoPin_Fan1 = 2;        // Pin des Tachosignals des Lüfters
7
// Variablen
8
int fanSpeed_Fan1 = 0;              // Variable für die Lüftergeschwindigkeit
9
int fanMin_Fan1 = 50;
10
int potiVar_Fan1 = 0 ;              // Variable zum speichern des Potentiometereingangs
11
int abfrZeit_Fan1 = 1000;           // Zeitabstand für die Abfragen des Tachosignals
12
long tachoMillis_Fan1 = abfrZeit_Fan1;   // Zeitabstand für Pulse Stretching Funktion
13
float rps_Fan1 = 0;                 // Variable mit Kommastelle zur Berechnung der Umdrehungen pro Sekunde
14
int rpm_Fan1 = 0;                   // Variable für die gemittelte Drehzahl
15
float umdrZeit_Fan1 = 0;            // Variable mit Kommastelle für die Zeit pro Umdrehung des Lüfters
16
float flankenZeit_Fan1 =0;          // Variable mit Kommastelle für die Zeit pro Puls des Lüfters
17
18
 // 3-Pin Ventilator
19
  pinMode(motorPin_Fan1, OUTPUT); //Set pin 3 as an OUTPUT
20
  pinMode(potiPin_Fan1, INPUT) ;      // Setzt den LEDPin als Ausgang
21
  pinMode(tachoPin_Fan1, INPUT);      // Setzt den Tacho Pin als Eingang
22
23
TCCR2B = (TCCR2B & 0b11111000) |0x01; // funktioniert noch nicht so, läuft ruckartig an.
24
25
  Serial.begin(9600); //Init serial communication
26
27
void loop()
28
{
29
  int temp, fan1;
30
  fan1 = Fan3Pin_out();
31
  LCD_out(temp, fan1);
32
33
}
34
35
36
// Lüfter 1 mit 3 Pin Anschluss
37
int Fan3Pin_out() {
38
potiVar_Fan1 = analogRead(potiPin_Fan1) ;               // Liest das Potentiometer aus
39
  fanSpeed_Fan1 = map(potiVar_Fan1, 50, 1023, fanMin_Fan1, 255);   // Verteilt den PWM Wert über den Messbereich des Potis
40
   Serial.println("potiVar_Fan1");
41
   Serial.println(potiVar_Fan1);
42
  // Unterer Potenziometerbereichs (0-50) = Lüfter aus
43
  if(potiVar_Fan1 < 50)
44
  {                  
45
    fanSpeed_Fan1 = 0;
46
  }
47
   
48
  analogWrite(motorPin_Fan1, fanSpeed_Fan1);     // Gibt die Variable mit PWM aus
49
   
50
  // Alle 2000ms pulse_stretch starten um die Drehzal auszulesen
51
  if((millis() - tachoMillis_Fan1) >= abfrZeit_Fan1) 
52
  {      
53
    pulse_stretch_Fan1();
54
  }
55
56
  delay(100);
57
  return speed_Fan1;
58
}

von Stefan F. (Gast)


Lesenswert?

Ist das denn so schwer?

Den ganzen Quelltext bitte. Und den Schaltplan.

von 10k Poti mit Arduino (Gast)


Lesenswert?

Merkwürdig nur, dass wenn ich 5V an VIN anschließe und am 5V Pin des 
Arduino die 5V für den Poti nehme, geht es wunderbar. Oder Wenn ich VREF 
komplett abklemme ...

von Stefan F. (Gast)


Lesenswert?

Du agierst planlos.

Zeige Quelltext und Schaltplan. Und wenn du misst, zeichne ein, wo du 
was gemessen hast.

An den Vin Pin musst du wie gesagt mindestens 7V anschließen, weil der 
Arduino sonst nur etwa 3V Spannungsversorgung hat. Wenn du dann das Poti 
an den 5V Pin anschließt, hat das auch nur 3V.

Ich würde Dir empfehlen, das Programm auf ein Minimum zu reduzieren, wo 
das Problem noch gerade erkennbar und nachvollziehbar ist. Das hilft 
Dir, den Überblick nicht zu verlieren.

So oder so kommst du nicht umhin, einen Schaltplan zu zeichnen. Du 
verzettelst dich sonst, und uns auch.

von wendelsberg (Gast)


Lesenswert?

Kann ein Mod bitte Betreff und Name richtigrum drehen?
Schon da scheint es beim TO ja zu scheitern.

wendelsberg

von Stefano Kol. (Gast)


Lesenswert?

Ich gehe nochmals alles Schritt für Schritt durch und werde mich melden, 
wenn ich alles sauber niedergeschrieben habe.

von Stefan F. (Gast)


Lesenswert?

Gute Entscheidung.

Folgende Spannungen sind hier relevant:

Der ADC vergleicht seine Eingangsspannung mit Aref. Aref kann wahlweise 
von extern zugeführt werden, oder intern erzeugt werden (ist 
programmierbar).

Sowohl die Spannung an Aref als auch am analogen Eingang darf nicht 
höher als die Stromversorgung des Mikrocontrollers sein, welche du am 
+5V Pin messen kannst.

Der Spannungsregler auf dem Board benötigt mindestens 7V an Vin, um 
daraus 5V zu erzeugen.

von spess53 (Gast)


Lesenswert?

Hi

>Ich gehe nochmals alles Schritt für Schritt durch und werde mich melden,
>wenn ich alles sauber niedergeschrieben habe.

Dann korrigiere gleich den Fehler

ADC value = Vi * 1023 / Varef

in Datenblatt konformes

ADC = VIN * 1024/VREF

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.