Hallo Leute
Ich versuche schon seit einigen Wochen einen alten Bohrplotter wieder in
Gang zu kriegen. Ich habe mir daher eine neue Steuerung mit einem AVR
entwickelt der Steuersignale per UART erhält, umrechnet und an drei
Motortreiberplatinen (jede Achse eine) die als Kern einen L298 und einen
L297 besitzen, weiterleitet.
Leider habe ich jetzt das Phänomen, das mir sobald ich eine
Motortreiberplatine anschließe die Ausgänge des AVR's durch drehen. Das
heist die angeschlossenen LED's blinken wie wild und ungleichmäßig. Der
Ausgang zur Richtungsänderung des Motors kippt auch hin und wieder mal
um. Nur beim Taktsignal-Ausgang für die Motortreiberplatine sowie die
dazugerhörige LED (anderer PIN am AVR) scheinen korrekt zu
funktionieren. Das kann aber auch sein das durch den schnellen Flanken
wechsel da nichts auffällt.
Ich habe jetzt das Programm mal so klein wie möglich neu geschrieben um
einen Programmierfehler aus zu schließen.
Jetzt Läuft der der X-Achsenmotor wenn ich einen Taster (mit externen
Pull-Down Widerstand) betätige.
Jetzt blinken trotz dem noch die LED Z und eine weitere StatusLED wie
wild.
Bitte macht mir die Motortreiberplatinen nicht madig, von wegen L298 und
L297 sind ja uhr alt nimm andere. Die Motortreiberplatinen waren vorher
schon da und die beiden IC's wurden schon auf allen Treiberplatinen
gewechselt. Die Schaltung auf den Treiberplatinen sind quasi identisch
mit denen der auf den Datenblättern der IC's.
Hört sich nach Störeinstrahlung an!
Poste mal bitte den Schaltplan mit dem AVR drauf, und eventuell das
Board-File! Warscheinlich wirkt eine Ground-Leitung als Antenne
Die neue Steuerplatine wurde per Lochraster gefertigt. Das Problem tritt
ja nur auf wenn ich eine Motortreiberplatine an schließe und diese waren
ja bereits vorher in dem Gerät.
Zur Erläuterung des Schaltplans: die Kästen mit den a und c Nummern sind
eine zusammanhängende 32 polige Steckerleiste. Und mir ist gerade auf
gefallen es soll natürlich heißen 8MHz und nicht KHz
Mach doch mal parallel zu C3 noch einen Elko mit, sagen wir mal, 470µF.
Wenn deine Motoren an der selben Spannungsquelle hängen, solltest du
lieber 4700µF oder noch mehr nehmen. Außerdem solltest du AVCC mit VCC
verbinden. Und ganz wichtig: Bei solch EMV-Belasteten Umgebungen den
RESET-PIN NIEMALS OFFEN LASSEN!!! Mach den mal mit ca. 1k Ohm auf VCC.
Sonst sieht alles ganz gut aus.
Gruß
Jonathan
>Sollte AVCC tatsächlich nicht mit VCC verbunden sein, würde ich das als>den Fehler bezeichnen.
Ich tippe mal auf den offenen Reset-Pin. Offener Reset + Motor =
...örgs.
Dein Programm ist aber auch nicht klar.
Die LED blinkt natürlich, du machst ja auch toggle,
und das wohl so schnell, daß du es nicht sehen kannst.
Aber wenn sich die Schaltung bei Anschluss der Motorplatine
anders verhält, dann sind Störungen nicht verwunderlich,
denn Motoren sind bekannte Störquellen, die gut verdrahtet
werden wollen, mit sauberer Masseführung, Funkentstörspulen
und Siebelkos.
Wenn man das nicht so gut kann, dann helfen oftmals Optokoppler,
um alle Signalleitungen und die Versorgungsspannungen komplett
zwischen MOtor und uC trennen zu können, aber bei Schrittmotoren
müssen es meist schnelle Optokoppler sein, wenn man da einfach
was hinpfuscht "10k reichen schon" dann handelt man sich leicht
Probleme ein mit zu langsamen Signalen. Bei Gleichstrommotoren
weniger dringend.
Ben S. schrieb:> Offener Reset Pin? aber dann würde doch der AVR einfach nur an dauernd> in Reset gehen?
Und Du bist sicher, dass er das nicht tut?
Zitat von Dir:
> Das heist die angeschlossenen LED's blinken wie wild und ungleichmäßig.
Jop. Klingt wie unkontrolliertes resetten :)
Viele Grüße,
Simon
Naja wie ich schon beschrieben habe der motor fährt sauber auch die dazu
gehörige LED, die ja ich weis mit getoggelt wird blinken (bzw. dimmen)
sauber und gleichmäßig. Um ein Reset aus schließen zu können habe ich
die Y LED auf dauerblinken (dimmen) geschaltet. Nach meiner Aufassung
nach müsste doch wenn der AVR resettet wird die Y LED wenigstens kurz
unregelmäßig flackern.
-AVCC offen -> An VCC anklemmen
-Relais K1-A hat keine Freilaufdiode
-wie sieht der 5V-Teil aus, der den uC versorgt?
-Was macht Referenzspannung Motor Z/Y/X? Eventuell koppelst Du Dir
rückwirkend über T2 auf PinD.7 Störungen ein. Eventuell
Spannungsberenzung mit Z-Diode
-Endschaltereingänge solltest mit z.B. 100Ohm + Z-Diode und nem C gegen
Masse schützen
Merke: Keine Pins eine uC direkt nach aussen führen! Schutzbeschaltung!
Das das hier wie Beschrieben nicht passt ist doch auch klar:
//Ein- und Ausgänge setzen (1 steht für Ausgang)
DDRB = 0b00100000;
DDRC = 0b00111111;
DDRD = 0b00111111;
//Pullup-Widerstände der Eingänge Aktivieren
PORTB = 0b00100000;
PORTC = 0b00111111;
Deine Endschalter haben keinen PullUp.
@Hubert G.: ja aber ich habe schon oben beschrieben das ich externe pull
down Widerstände ab
Aber danke das das sich hier so viele einen Kopp über meine Schaltung
machen.
Route_66 schrieb:> Hallo!> Ist der Quarz so angeschlossen oder ist das ein Zeichenfehler?
8kHz Quarz in Serienresonanz für einen Atmega8 klingt bedenklich ;-)
T1 hat auch keinen Vorwiderstand.
Des mit dem Vorwiederstand hab ich auch schon bemerkt is nur falsch
gezeichnet. Sorry
Die 8KHz hab ich schon im ersten Post erklärt.
Morgen kann ich wieder aktiv weiter dran arbeiten. Ich werde nach und
nach eure Empfelungen testen. Mal sehen wo ran es liegt.
AVCC an 5V
Reset über Widerstend an 5V
weiteren Elko an 5V und GND des µC
Wenn ich dann nichts finde werde ich wohl die komplette platine neu an
fertigen.
Achso die Freilaufdiode an K1 wie konnte ich die nur vergessen uiui
Ben S. schrieb:> Die 8KHz hab ich schon im ersten Post erklärt.
Ah, stimmt.
Die Kondensatoren sollten aber parallel liegen, schau mal ins Atmega8
Datenblatt.
wenn die motoren stehen, geht alles? für emv tests kannst du ja mal
einen der motoren extern mit 12v versorgen, trenne jeweils eine seiner
versleitungen von den treiberplatinen. tritt das problem dann auch auf?
den reset wirst du an der y led fast nicht erkennen - du benötigst eine
variable, die VOR einem tastendruck 0 ist und somit die led aus ist -
nach einem reset müsstest du dann erst eine bel taste drücken, damit die
y led wieder aktiv wird...
shift war das thema nicht wert.
Klaus.
Ne also wirklich meine Zeichnung kann man ja echt in die Tonne drücken!
Der Quarz ist natürlich richtig eingebaut. Ich glaube nach meiner
Zeichnung würde der µC überhaupt nicht funtzen.
Die Störungen treten auf so bald ich die Motortreiberplatine an stecke
ohne den Motor fahren zu lasen (der Motor ist aber sofort in
Haltestellung da Motor-Enable immer high ist)
Ein dierecktes Motorproblem schließe ich aus, da dieser Fehler bei allen
drei Motoren auf tritt. Die unterschiedlichen Treiberplatinen konnte ich
noch nicht testen da nur eine Treiberplatine das RC Glied für den
Choppermodus hat und diesen durch den L297 weiter auf die anderen
Platinen weiter geleitet wird.
Das extra Anschalten der Y-Diode ist eine gute Idee das werde ich mal so
programmieren.
So es ist geschafft!!!
Schuld war der offene AVCC.
Um eine korrekte Schaltung vor weisen zu können abe ich natürlich die
anderen Punkte mit bearbeitet.
Danke Leute!
Jetzt stellt sich mir nur noch die Frage warum???
Was hat der offene AVCC Pin jetzt genau mit dem µC gemacht?
Ben S. schrieb:> ja aber warum spielen die LED's an PortD verrückt
Ganz genau können dir das nur die Leute von Atmel erklären. Wenn
überhaupt.
Aber ich spekuliere mal:
Du hast ja am Port C einige Ausgänge benutzt. Da du aber für diesen Port
keine Stromversorgung hast (Avcc hängt in der Luft), wird sich der Port
irgendwie anders, auf nicht vorgesehenen Wegen mit Strom versorgen. Denn
irgendwoher muss ja der Strom kommen, mit dem du deine Motorsteuerung
ansteuerst.
Iregendwelche anderen unvorhergesehenen Wege klingt aber nicht gut, das
kann alles mögliche sein und zb soweit gehen, dass dieser Stromfluss
anderen Komponenten im AVR den Strom abgräbt. -> Alles mögliche kann
passieren.
Daher die einfache Grundregel: Wenn ein IC mehrere
Versorgunsspannungsanchlüsse hat, dann werden immer alle beschaltet. Es
sei denn das Datenblatt sagt, dass es in Ordnung ist ein paar
auszulassen.
Und schon hast du ein Problem weniger. Die Leute, die den Chip fertigen
sind ja auch keine Trottel. Die schreiben nicht ohne Grund in ihr
Datenblatt, was du alles beschalten musst.