Merkwürdiges Phänomen:
Ich habe einen L293D (auf einem Breadboard) mit dem Arduino verbunden.
An den L293D ist ein (kleiner) Motor angeschlossen, den ich
bidirektional betreibe. Der Motor wird alle 40ms für 20ms (mit 5V)
angesteuert. Am Ende der spannungslosen 20ms messe ich mittels der
Analogeingänge A0 und A1 die vom Motor (im Leerlauf) erzeugte Spannung.
"A0" ist mit dem einen Anschluss des Motors, und "A1" mit dem Anderen
verbunden. Dadurch kann ich feststellen, in welche Richtung sich der
Motor dreht (die Drehrichtung kann durch äussere Kräfte der Ansteuerung
entgegenwirken, daher muss ich die vom Motor erzeugte Spannung messen,
um festzustellen in welche Richtung sich der Motor dreht)! Mit
Stromversorgung über USB funktioniert die Messung einwandfrei. Wenn ich
den ARDUINO aber mit einem Netzteil mit Strom versorge, und keine
USB-Verbindung besteht, liefert der A/D-Wandler unbrauchbare Werte! Ich
habe dann die gleiche Schaltung (Spannungsregler + Atmega 328P + L293D +
...) komplett auf einem Breadboard aufgebaut , so dass kein ARDUINO mehr
benötigt wird. Auch hier liefert der A/D-Wandler (mit demselben Programm
wie vorher) unbrauchbare Werte. Nach ein wenig Tüftelei habe ich dann
herausgefunden, dass eine Verbindung der Breadboard Masse mit der
Arduino Masse (bei bestehender USB-Verbindung des ARDUINOS) ausreicht um
einwandfreie Messergebnisse zu bekommen. Es handelt sich also um ein
"Masse-Problem". Nachdem ich dieses festgestellt hatte, habe ich die
Breadboard-Masse anstatt mit der ARDUINO-Masse mit dem Schutzkontakt
einer Netzsteckdose verbunden, und siehe da, dass Programm läuft
einwandfrei!
Kann mir jemand sagen, wo das Problem mit der Netzteil Masse ist? Ich
habe verschiedene Netzteile ausprobiert, immer dasselbe negative
Resultat bei Verwendung von ausschließlich der Netzteil Masse!
Mess mal mit dem Multimeter durch, ob die Leitungen durch das ganze
Breadboard gehen. Bei mir gehen die jeweils nur zur Mitte und deswegen
hab ich die immer mit Drähten durchverbunden.
MichaDi schrieb:> Es handelt sich also um ein "Masse-Problem".
Nur hast du kein Problem mit der Masse, sondern ohne... ;-)
Ich würde bei diesem Aufbau eher ein elementares EMV-Problem vermuten:
Ich kann keinen einzigen Entkopplungskondensator sehen, und der
Laststrom fließt geradeaus über die Versorgung des uC. Zudem hast du
keinerlei Filtermaßnahmen vor den AD-Eingängen... :-o
Probier mal das: sind deine AD-Werte konstant, wenn der Motor nicht
läuft?
...nein, die Werte sind nicht konstant wenn der Motor nicht läuft und
nur das Netzteil angeschlossen ist! Sobald ich die Breadboard-Masse aber
mit einer zusätzlichen Masse verbinde sind die Werte konstant!
...Vcc2 des L293D mit einem separaten Spannungsregler zu versorgen
bringt auch nichts!
Hab' gerade Drosseln bestellt, um einen Tiefpassfilter für AVcc zu
realisieren, vielleicht hilft das!?
MichaDi schrieb:> Hab' gerade Drosseln bestellt, um einen Tiefpassfilter für AVcc zu> realisieren, vielleicht hilft das!?
Nein. Ich habe etliche uC ohne Spule am Avcc problemlos auch mit ADC am
Laufen. Dein Problem liegt woanders.
MichaDi schrieb:> die Werte sind nicht konstant wenn der Motor nicht läuft
Ohne Witz: woran siehst du das? Du hast keine Anzeige in deinem
Aufbau...
kommt ganz auf den Aufbau an. Wenn der Motor auch vom Spannungsregeler
versorgt wird kann ein ordentlicher Aufbau z.B: Drosseln möglichst nah
an VCC und AVCC ganz schon was helfen.
Thomas O. schrieb:> vielleicht hat der USB-Port irgend eine Schutzmaßnahme z.B:> Überspannungsschutz...der deinen Aufbau unterstützt.
...es reicht auch eine Verbindung (wie oben erwähnt) der
Breadboard-Masse mit dem Schutzkontakt einer Netzsteckdose!
Lothar Miller schrieb:> Ohne Witz: woran siehst du das? Du hast keine Anzeige in deinem> Aufbau...
...ich habe eine Abfrage programmiert, bei welcher ich eine LED leuchten
lasse wenn der Wert von "A0" (an einem der Motoranschlüsse) größer ist
als der Wert von "A1" (an dem anderen Motoranschluss)! Mit zusätzlicher
Masse leuchtet die LED wenn ich den Motor mit der Hand in eine Richtung
drehe, und die LED erlischt, wenn ich den Motor in die andere Richtung
drehe! Wenn der Motor steht leichtet die LED nicht! Ohne zusätzliche
Masse blinkt die LED ungleichmäßig auch bei stehendem Motor und auch bei
drehendem Motor ist kein Bezug der LED zur Drehrichtung zu erkennen!
...auch wenn das hier in einen Monolog ausartet, möchte ich noch
erwähnen, dass ich herausgefunden habe, dass sich das Massekabel eines
Schweissgerätes ideal eignet um die Masse der Schaltung mit einer
Heizung zu verbinden! Da fast in jeder Umgebung Heizungen in der Nähe
sind halte ich diese Lösung für praxisnah!?
MichaDi schrieb:> habe ich die> Breadboard-Masse anstatt mit der ARDUINO-Masse mit dem Schutzkontakt> einer Netzsteckdose verbunden,
Das ist ja zum Haareausreissen.
Überlege das doch bitte nochmal. Vielleicht klappt es ja auch
wenn du einen Finger in die nase steckst. (Spassmodus)
k.
PROBLEM GELÖST:
Nachdem ich vergeblich versucht habe die Signalstörungen zu beseitigen,
habe ich das Programm so geändert, dass es jetzt den analogen Komparator
anstelle des A/D-Wandlers nutzt, und siehe da, alles funktioniert wie
gewünscht!
Klaus De lisson schrieb:> Das hat jetzt keiner verstanden.
...ich will ja nur die Drehrichtung des Motors feststellen, da brauche
ich keine exakten Werte, sondern nur eine Abfrage, ob Signal a (einer
der Motoranschlüsse) größer ist als Signal b (der andere
Motoranschluss)!
Eine eigene Frage?
Dieser Thread ist über 15 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.