Hallo! Ich habe ein Problem mit der Reihenschaltung von Transistoren. Irgendwie klappt das nicht, wenn ich Vref (+) und Ground (-) zusammenlöte und den Output von jedem Poti einzeln entnehme. Was mache ich nur falsch?
:
Bearbeitet durch User
Linus C. schrieb: > Was mache ich nur falsch? Im Titel sprichst du von der Reihenschaltung von Potis. Im Text von der Reihenschaltung von Transistoren. Und Vref und GND zusammen zu löten ist auch keine gute Idee. Also kann ich mich nur meinem Vorredner anschließen. Zeige einen Schaltplan und sag, was du wissen möchtest. :-)
Sieht nach einem kurzen Blick doch eher nach Parallel-Schaltung aus. Was ich eigentlich will, ist die Spannung von OUTPUT abzapfen und vom Mikrocontroller messen lassen.
Linus C. schrieb: > Sieht nach einem kurzen Blick doch eher nach Parallel-Schaltung > aus. Was > ich eigentlich will, ist die Spannung von OUTPUT abzapfen und vom > Mikrocontroller messen lassen. Und was klappt nicht? Ich nehme an, OUTPUT ist jeweils der Schleifer der 4 Potis, also OUTPUT1...OUTPUT4. Was klappt nicht?
Ja, das mit OUTPUT1-4 ist richtig. Aber wenn ich von jedem OUTPUT lese, kommt immer eine bestimmte Spannung eines Potentiometers heraus, egal, wie ich ihn einstelle.
:
Bearbeitet durch User
Linus C. schrieb: > ... Aber wenn ich von jedem OUTPUT lese, > kommt immer eine bestimmte Spannung eines Potentiometers heraus, egal, > wie ich ihn einstelle. Ja, das ist aber Mist oder willst du das so?
Linus C. schrieb: > Ja, das mit OUTPUT1-4 ist richtig. Aber wenn ich von jedem OUTPUT > lese, > kommt immer eine bestimmte Spannung eines Potentiometers heraus, egal, > wie ich ihn einstelle. Kannst du diese "bestimmte" Spannung näher erläutern? Wenn du nicht so viel in Rätseln sprechen würdest, hätten wir vermutlich schon die Lösung. Also: Beispiele mit Zahlen bitte Übrigens: Ich vermute einen Programmfehler, von daher wäre der Sourcecode des unbekannten Controllers aus interessant.
Nein, das will ich nicht, eigentlich möcht ich von jedem Poti die spezifische Spannung ablesen.
Linus C. schrieb: > Nein, das will ich nicht, eigentlich möcht ich von jedem Poti die > spezifische Spannung ablesen. Warst du mal mit einem Meßgerät an den 4 Schleifern?
Ich habe jeden Potentiometer einzeln getestet, und das hat funktioniert. Mit dem Arduino lese ich die Spannung:
1 | void setup() { |
2 | // initialize serial communication at 9600 bits per second: |
3 | Serial.begin(9600); |
4 | } |
5 | |
6 | // the loop routine runs over and over again forever: |
7 | void loop() { |
8 | // read the input on analog pin 0: |
9 | int sensorValue = analogRead(A0); |
10 | int sensorValue2 = analogRead(A1); |
11 | int sensorValue3 = analogRead(A2); |
12 | int sensorValue4 = analogRead(A3); |
13 | // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): |
14 | // float voltage = sensorValue * (5.0 / 1023.0); |
15 | // print out the value you read: |
16 | // For example, pin A0 |
17 | Serial.println(sensorValue); |
18 | } |
:
Bearbeitet durch User
Du hast 4 Potis a' 100 R parallel an einer Spannungsquelle von 1 Volt. Die Spannungsquelle wird mit 40 mA belastet. Einstellen kannst Du Werte von 0 bis 1 Volt. Mehr ist nicht zu erkennen. Wo liegt jetzt dein Problem ? Was meinst Du mit spezifischer Spannung ?
Beispiel mit Zahlen: normalerweise bei 5V Spannung, gibt der Arduino ~500 aus. DAS PROBLEM: Sagen wir, ich lese von OUTPUT 3, kommt trotzdem die Zahl von OUTPUT 1.
:
Bearbeitet durch User
Linus C. schrieb: > Serial.println(sensorValue); Bis jetzt wertest du nur sensorValue aus, die anderen drei (sensorValue2, sensorValue3, sensorValue4) nicht. Ist das so gewollt?
Marek N. schrieb: > Hm, 40 mA aus "V_ref" könnte schon arg viel sein. 40 mA wenn die Potis mit 1 Volt versorgt werden. Bei Versorgung mit 5 Volt sind es sogar 200 mA.
Eben, wie Torsten schon sagte, der Fehler liegt im Programm! Oder es ist nicht das Ganze! Chregu
Ergänze mal nach der letzten Zeile mit: Serial.println (sensorValue2); Serial. Println (sensorValue3); Serial.println (sensorValue4);
Danke, funktioniert jetzt einigermaßen, lag vielleicht eher am Löten... Es ruckelt nur leider ein wenig, die Werte varieren zwischen +-5. Kann man das noch beheben?
Mehrere Werte nacheinander messen, aufaddieren und die Anzahl der Messwerte teilen.
Linus C. schrieb: > float voltage = sensorValue * (5.0 / 1023.0); Ich hoffe, dir ist klar, dass diese Formel falsch ist. Auch wenn sie schöne 5.0 für den oberen Endwert ergibt. Ich würde sowieso empfehlen, nicht generell mit float zu rechnen, weil der uC auf deinem Board keine float-Einheit hat, und sich mit seinen 8 bit zu Tode knechtet. Rechne deine Spannung in mV und mit dem Faktor 1024, dann geht das wesentlich schneller: > short U_mV = ((long)sensorValue * 5000) / 1024; Linus C. schrieb: > Es ruckelt nur leider ein wenig, die Werte varieren zwischen +-5. Bei welcher Poti-Einstellung? Woher kommt diese Zahl? Ein ADC kann von sich aus keine "-5" ermitteln, wenn er nur einen Wertebereich von 0..1203 hat... Meinst du, du hast ein Rauschen auf den unteren Bits deines Ergebnisses? Dann solltest du mal nach dem Schaltungsaufbau und der Masseführung sehen. Oder ziemlich am uC einen 100nF Kondensator vom AD-Pin nach GND einbauen.
Ja, ich meine das Rauschen. Danke! Werde es mit dem Kondensator versuchen. Wo genau soll ich den einbauen?
Linus C. schrieb: > Warum addieren? Danach kann man diese nicht mehr verwenden. Du könntest sie ja bspw in einer extra Variablen aufaddieren. Dann gehen sie nicht "verloren". Das ganze nennt sich Mittelwertbildung. So in etwa
1 | for(i=0; i<5; i++); |
2 | {
|
3 | Messwert = analogRead(A0); |
4 | Mittelwert += Messwert; |
5 | }
|
6 | Ausgabewert = Mittelwert/5; |
7 | println (Ausgabewert); |
Linus C. schrieb: > Werde es mit dem Kondensator versuchen. Wo genau soll ich den einbauen? Lothar M. schrieb: > am uC einen 100nF Kondensator vom AD-Pin nach GND einbauen. Oder die lange Variante: Du nimmst einen Pin des Kondensators und schließt den so dicht wie möglich am uC Analogeingangspin an. Den anderen schließt du so dicht wie möglich am uC an GND an. Das ganze 4 mal, für jeden einzelnen Analogeingang... jendrik träger schrieb: > So in etwa > for(i=0; i<5; i++); > ... > Ausgabewert = Mittelwert/5; Und wenn man jetzt beachtet, dass ein uC keine 5 Finger pro Hand hat, sondern ein zutiefst binäres Gebilde ist, dann nimmt man da eine Zweierpotenz, also hier 4 oder 8. Damit macht man dem Compiler das Leben bedeutend einfacher, weil er die (komplizierte) Division durch einen (simplen und schnellen) Schiebevorgang ersetzen kann...
Linus C. schrieb: > Werde es mit dem Kondensator versuchen. Wo genau soll ich den einbauen? die! Am Analogteil von deinem Mikrocontroller. 1. Zur Filterung der Versorgungsspannung vom Analogteil 2. Zur Filterung der Spannung an deinen Potis 3. Zur Filterung Stabilisierung der Referenz 4. Zur Pufferung/Filterung der analogen Eingangssignale
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.