Guten Tag liebes Forum,
ich mache jetzt schon seit ca. 10 Stunden daran herum und komme nicht
weiter.
Aufgabenstellung:
Es geht um ein Projekt, in dem eine Steuerung einen Messerschlitten auf
Signal vor und wieder zurück in die Ausgangsstellung bewegt. Die Strecke
ist durch zwei Endstops begrenzt. Angesteuert wird ein 12V Getriebemotor
in N20 Baugröße. Seitens der Maschine sind 24V vorhanden.
Realisierung:
1. Zwei LM317 Spannungswandler wandeln die 24V auf je 12V (für den
Motor) und 5V (für die Logik).
2. Die Endstops schalten je PB3 bzw. PB4 bei Kontakt mit dem Schlitten
auf GND, dazu wird PB3/PB4 intern mit Pullup versehen.
3. Das Signal für "Schnitt" ist ebenfalls mit einem Pullup versehen. Bei
Schluss mit GND soll der Schlitten losfahren.
Problem:
Ich habe alles durchgemessen und der ATtiny85 funktioniert tadellos bzw.
gemäß Erwartung, solange wie der Motor nicht an den L293D angeschlossen
ist. Sobald dieser angeschlossen ist, stottert er, die Signale am ATtiny
fließen bzw. fallen und steigen sporadisch an PB1-PB4, bis nach ca. 5
Sek. alles zum Erliegen kommt. Dann liegen an PB1/PB2 5V an, an PB3 iwas
mit 2,xxV. Trotz Pullup. Dasselbe Phänomen taucht sehr abgeschwächt auf,
sobald ich einen 0,47uF Kondensator am L293D zwischen 2Y und GND
schalte.
Auch interessant: Auf dem Steckbrett funktioniert alles mit Motor an,
allerdings mit Spannungsversorgung durch das Labornetzteil (je 5 und
12V, also keine LM317er!). Schließe ich aber ein zu langes Kabel an,
stottert wieder alles. Außerdem verlängert sich die Dauer des Stotterns,
wenn ich zwischen PB5(Reset) und GND die Spannung (4,85V) messe.
Im Anhang findet sich der Schaltplan und der Code (Arduino IDE mit
Programmierung über Arduino UNO als ISP). Ich weiß es ist viel Text,
hoffe trotzdem jemandem fällt was ein. Es scheint mir nur eine
Kleinigkeit zu sein, die ich vergessen habe oder nicht weiß.
Danke vorab!
Gruß Marvin
1
int endstopRight = 4;
2
int endstopLeft = 3;
3
int cutSignal = 0;
4
int motorInput1 = 1;
5
int motorInput2 = 2;
6
//int p5 = 5;
7
8
// the setup routine runs once when you press reset:
Roland E. schrieb:> Stützkondensatoren vergessen.> R2/R4 zu niederohmig. Vor allem R2.
R2 sind wohl 2K2, vom TO vermutlich nur falsch beschifftet. Für 12V
müsste er etwas kleiner sein sein, ist aber der nächste in der Reihe.
Roland E. schrieb:> R2/R4 zu niederohmig. Vor allem R2.
Warum? Mit lt. Datenblatt empfohlenen R4 von 240 Ohm komme ich anders
nicht auf 12V als R2 = 2R2.
Roland E. schrieb:> Stützkondensatoren vergessen.
Welche? Und warum brauche ich die hier, bei einer derart überschaubaren
Schaltung ohne hohe Schaltfrequenzen?
OMG schrieb:> --> voll der Pfusch am Bau.>> Vergleiche C1 und C2 mit den Schaltungsvorschlag im Datenblatt!
Oh Mist, ne Null vergessen *pwn".
Aber liegt das wirklich daran und nicht irgendwie am Code bzw. am
Attiny85? Lt. Datenblatt
(https://www.st.com/resource/en/datasheet/lm217.pdf) kann man die
Kondensatoren auch ganz weglassen, wie gesagt, hier schaltet ja nichts
schnell und hohe Ströme brauchts auch nicht. Der Motor saugt 150mA im
Betrieb ohne Last.
Ich habe gerade mal nen dicken 100 uF Kondensator an den 5V Ausgang des
LM317 zu GND gehängt - hat nix gebracht.
MaBau schrieb:> Warum? Mit lt. Datenblatt empfohlenen R4 von 240 Ohm komme ich anders> nicht auf 12V als R2 = 2R2.
Du meinst hier sicher 2k2 und nicht 2R2. Im ersten Fall hätte man 2200
Ω, im letzeren 2.2 Ω. Ich kann mir nicht vorstellen, dass du da wirklich
2.2 Ω eingesetzt hast. Und einen Wert in der Form R240 im Schaltplan
anzugeben bedeutet, dass der entsprechende Widerstand (z.B. R1) hier
0.240 Ω haben soll, du meinst hier aber 240 Ω. Beschäftige dich ganz
dringend mit den Bezeichnungen.
Zu deinem Problem: Wahrscheinlich Überlastung gepaart mit fehlenden
Stützkondensatoren und Co. 100n Kerkos gehören an jeden IC dicht an
jeden einzelnen Versorgungspin. Die fehlenden Kondensatoren an deinen
LM317 wurde ja schon genannt.
Positiv anzumerken ist, dass du keine PWM auf den Enable-Pin des L293
gibst. Am Attiny hast du aber noch Pins frei, warum nutzt du nicht den
Attiny zum Steuern des Enable-Pins?
Danke für die Antworten und den Rat, das mit den Bezeichnungen ist
wirklich verwirrend von mir, sorry dafür - ist schon fast 10 Jahre her
als ich letztes Mal in der Schule Platinen entworfen habe.
Bisher dachte ich immer, größere Werte als angegeben sind bei
Kondensatoren kein Problem - getreu dem Motto je mehr desto besser. Aber
dem scheint nicht so.
Ich werde die Schaltung jetzt nochmal neu aufbauen, diesmal nach
Empfehlung des Datenblatts seitens des LM317 mit genau den angegebenen
Dioden und Stützkondensatoren, außerdem erhöhe ich die Spannung auf
rechnerisch 5,16V statt 4,79V, indem ich statt 680 nun 750 Ohm einbaue.
Nach M. K. (sylaina) mache ich an die Versorgungen der ICs noch 100n
Keramikkondensatoren. Ich habe am ATtiny85 eigentlich nur noch einen
freien Pin und der ist doch mit Reset belegt, wenn ich Fuse xy nicht
umsetze - dann kann ich ohne vorigen HV-Programmer-Einsatz aber nicht
mehr per ISP programmieren. Kann ich den Pin auch so nutzen? Im
Datenblatt war etwas von "schwachem IO" die Rede - heißt das IO zwischen
3 und 5 Volt oder so?
@Roland E. (roland0815) leider habe ich keinen Oszi - aber es hätte sich
schon mehrmals jetzt gelohnt, einen zu haben. Ich überlege, mir einen
anzuschaffen, wenn ich was günstiges finde.
": Auf dem Steckbrett funktioniert alles mit Motor an, allerdings mit
Spannungsversorgung durch das Labornetzteil (je 5 und 12V, also
keine LM317er!). Schließe ich aber ein zu langes Kabel an, stottert
wieder alles"
Hallo,
ohne Elkos wird die Schaltung nicht funktionieren. Mach vorne einen
dicken Elko rein, nach den Spannungsreglern zwei kleinere und an jedes
IC die brühmten 100 nF keramik. Für Plus und Minus sollte die
Verdrahtung ausreichend dick sein.
MfG
Die berühmten 100nF Keramik waren mir tatsächlich nicht bekannt. Anbei
der aktualisierte Schaltplan. Passt so oder? Verbesserungsvorschläge
willkommen, bevor ich ans Fertigen gehe.
Danke soweit! Wenn ich mich an den Thread erinnere wenn es fertig ist
poste ich das Ergebnis bei Erfolg oder Misserfolg.
MaBau schrieb:> Die berühmten 100nF Keramik waren mir tatsächlich nicht bekannt. Anbei> der aktualisierte Schaltplan. Passt so oder?
Viel akademischer SchnickSchnack drin.
D1 ind D2 braucht man nur, wenn am AUSGANG der Regler GROßE Elkos hängen
UND der Eingang kurzgeschlossen werden könnte. Das ist seltenst der
Fall.
D2, D4, C3, C4 sind ebenso überflüssig. Die minimale Standardschaltung
reicht hier dicke.
VCC2 deines Treibers könnte einen Elko vertragen, je nach Strom und
Anwendung vielleicht 100-1000uF.
https://www.mikrocontroller.net/articles/Kondensator#Entkoppelkondensator
Wenn man einen Motor damit betreiben will, sollte man
a) einen nehmen, der direkt mit den 24V klar kommt oder
b) den Treiber direkt mit 24V versorgen und per PWM die Spannung
runtersetzen, damit der Motor seine Nennspannung bekommt.
c) einen Spannungsregler mit ausreichend großem Kühlkörper
verwenden.
Ich empfehle hier b), denn das spart U1 und viel Verlustwärme. Dazu mußt
du aber die Treiber an PB0 und PB1 anschließen, denn nur dort hast du
die PWM-Ausgänge von Timer 0 drauf.
An Reset von U3 gehören 100nF gegen GND zur Entstörung.
Dein Enstop und CUT Eingänge könnte etwas Filterung und Schutz
vertragen, siehe
https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster
Außerdem sollte man die Logik der Endkontakte so definieren daß beim
Kabelbruch bzw. Vergessen vom Anstecken der Taster die Motorlogik stehen
bleibt. D.h. hier, es müssen Öffnerkontakte sein. Sonst kann es dir
passieren, daß du endlos gegen den blockierten Motor fährst. Ein Timeout
in der Software wäre auch nicht schlecht.
Und last but not least brauchen Leistungsendstufen eine gescheite,
sprich, sternförmige Masseführung, damit dir die Pulsströme der Motoren
nicht in die Signale des Controllers spucken. Der oben genannte 1000uF
Elko ist ein guter Sternpunkt.
> Verbesserungsvorschläge> willkommen, bevor ich ans Fertigen gehe.
Außerdem könnte dein Schaltplan etwas Aufräumen und Lesbarkeit
vertragen. Man zeichnet keine Bauteile über Beschriftungen und
umgekehrt.
Schaltplan richtig zeichnen
Die Bauteilwerte von U1 und U2 sind LM317, auch wenn die in der
Schaltung unterschiedliche Spannungen erzeugen. Am Bauteiltyp ändert das
nix.
Christian M. schrieb:> C5 und C6 als Tantal: ganz schlecht! Hohe Pulsströme und so. Und Tantal> als Metall ist ja auch zumindest fragwürdig...
Mein Gott, schon wieder ein Reichsbedenkenträger. Erstens liefert der
LM317 kaum soviel Pulsstrom, als daß es den Kondensator schädigen oder
gar abfackeln könnte und 2. ist das Gejammer um Tantal als böses
"Konfliktmaterial" lächerlich. Da kannst du auch gleich auf Erdöl
verzichten, viel Spaß.
Falk B. schrieb:> D2, D4, C3, C4 sind ebenso überflüssig.
C3, C4 sind nicht nur überflüssig sondern sie verhindern auch
dass die Regler das tun was sie sollen.
OMG schrieb:> Falk B. schrieb:>> D2, D4, C3, C4 sind ebenso überflüssig.>> C3, C4 sind nicht nur überflüssig sondern sie verhindern auch> dass die Regler das tun was sie sollen.
Nein, die Kondensatoren an ADJ sind laut Datenblatt korrekt, wenn man
die PSRR erhöhen will. Braucht hier aber keiner, schon gar nicht bei
24VDC am Eingang.
An dieser Stelle nochmal vielen Dank für die vielen hilfreichen
Informationen!
Ich habe versucht, alles zu beachten und dabei ist nun folgendes
herausgekommen (s. Anhang). Wenn nichts weiter dagegen spricht und nicht
noch ein weiterer der vielen ausgemerzten groben Designfehler auftaucht,
werde ich in den nächsten Tagen mal einen Prototyp machen.
MaBau schrieb:> Ich habe versucht, alles zu beachten
Naja.
> und dabei ist nun folgendes> herausgekommen (s. Anhang).
Da fehlt noch einiges.
Keine Schutzbeschaltung/Filterung der Signaleingänge!
Die Eingänge 10, 15 und 9 von U3 sind offen, das macht man nicht!
Eingänge NIE offen lassen.
C3, C5, C6 und C7 stehen "auf dem Kopf". Man sollte die positiven
Versorgungsspannungen immer nach oben zeichnen und die negativen nach
unten. Das ist deutlich besser lesbar und sieht besser aus.
An U3 und C4 laufen noch Leitungen durch die Beschriftung, das ist
schlecht.
Hi!,
Christian M. schrieb:> Den L293D speist Du schoen dick ein, aber zum Motor gehste mit so> duennen Draehtle und noch zwischen den Anschluessen hindurch!?
Ja, das hat andere Beweggründe. Ich ätze mit der Tonertransfermethode
und da ist es gut so wenig dünne Leiterbahnen wie möglich zu haben. Der
Motor braucht bei Blockage 600 mA, im Normalfall so 200-300mA. Die 0,4mm
Bahnen reichen bei meiner 0,35mm Kupferplatine aus.
Falk B. schrieb:> Keine Schutzbeschaltung/Filterung der Signaleingänge!> Die Eingänge 10, 15 und 9 von U3 sind offen, das macht man nicht!> Eingänge NIE offen lassen.> C3, C5, C6 und C7 stehen "auf dem Kopf". Man sollte die positiven> Versorgungsspannungen immer nach oben zeichnen und die negativen nach> unten. Das ist deutlich besser lesbar und sieht besser aus.> An U3 und C4 laufen noch Leitungen durch die Beschriftung, das ist> schlecht.
ich passe den Schaltplan nochmal an und werde die offenen Eingänge
direkt an GND schließen.
Stephan schrieb:> Was wurde aus den Freilaufdioden im Datenblatt ?
Lasse ich weg, Kurzschlusswsl. zu gering, nicht viel Ladung hinter LM317
in Elkos.
Stephan schrieb:> Ist der Motor entstört> ?
Ja, die Kondensatoren dafür sind direkt am Motor.
Hi, erstmal nochmal vielen Dank für die Tipps, sie haben mich sehr
weitergebracht. Ich bin aber noch nicht am Ziel: Ich melde mich zwecks
Feedback und weiterem Anliegen:
Ich habe die oben dank und mit der Gemeinschaft hier entwickelte
Steuerung weiter angepasst und aus Platz- und Gewichtsgründen auf das
Wesentliche reduziert. Der LM317 für die 5V ist ganz gewichen, weil ich
nun (doch) die 5V Logik-Versorgung der übergeordneten Maschine nutzen
kann.
Im Einsatz verhält sich der Motorschlitten allerdings "komisch": Während
ca. 90% aller Aktionen (1 Aktion = Einmal erwartungsgemäß VOR und
ZURÜCK) erfolgreich verlaufen, gibt es bei etwa 1 von 10 Aktionen eine
der folgenden Veerhaltensweisen:
- Der Schlitten bleibt abrupt stehen und fährt nach <1s wieder an (als
ob der ATtiny85 resettet wird).
- Der Schlitten fährt nur einen Teil VOR und ganz ZURÜCK, als ob der
Endstop(VOR) ohne Berührung schaltet.
- Der Schlitten fährt nur einen Teil ZURÜCK und bleibt dann stehen, als
ob der Endstop(ZURÜCK) ohne Berührung schaltet.
- Der Schlitten fährt VOR und immer weiter VOR soweit er kann, als ob
der Endstop(VOR) nicht existiert.
- Der Schlitten bleibt stehen und ohne RESET funktioniert keine weitere
Aktion mehr.
Klang für mich als ob der Motor nicht ausreichend entstört ist... . Doch
ich habe alles mir erdenkliche dafür getan, siehe Schaltplan. Die
Schaltung mit dem ATtiny sitzt praktisch direkt neben dem Motor, der
ATtiny selbst ist ca. 2 cm davon weg, der L293D 5mm. Die Zuleitungen zum
Motor sind ca. 4 cm lang.
Was kann ich da noch machen? Den ATtiny abschirmen? Den Motor
abschirmen? Mit regelmäßiger Programmfortlauf- und Speicherüberprüfung
usw. programmieren? Fehlt vielleicht irgendwo noch ein Kerko? Langsam
fallen mir die Haare aus... . Wäre toll wenn jemand noch einen Tipp für
mich hat, danke!
Gruß und schönes WE
MaBau schrieb:> Doch> ich habe alles mir erdenkliche dafür getan, siehe Schaltplan
Naja, 140nH (wo bekommt man so kleine Spulen, wenns nicht für einen UKW
Tuner ist?) sind viel zu klein, um auch nur leichtes Bürstenfeuer zu
verrunden. Nimm da mal 100-470µH Drosseln, die den Motorstrom vertragen.
Übrigens, wenn die eine Hälfte des L293 einfach brachliegt, kannst du
die Endstufen auch parallel schalten. Mit fehlt noch da eine
Überstromabfrage für einen blockierenden Motor. Sparsamkeit ist ja gut
und schön, aber ein Tiny mit ein paar Pins mehr hätte es schon sein
können.
LC Glied in der 24V Versorgung zum Motor kann auch nicht schaden.
MaBau schrieb:> Was kann ich da noch machen?
Warum machst du erst ein Layout fertig und fällst wieder rein?
Du kannst doch deinen Schaltplan und Layout hier diskutieren
lassen und ->dann<- erst ans "Machen" gehen.
Ich kenne die Stromaufnahmen deines Motors nicht aber du
brauchst sicherlich für einen Motor einfach einen dicken
Elko zum Abblocken. Aber ob das die Schaltung so rettet
- ich weiss es nicht.
Bei dieser meiner Kopfschüttelei fällt es mir schwer auf
weitere Details zu achten, aber so sollte z.B. der Reset
einen niederohmigen Pullup haben sodass dier ISP noch
funktioniert aber kein "zufälliger" Reset ausgelöst werden
kann.
Und ein Lüfter der mit der gleichen Spannung versorgt wird
wie dein Controller wird dir mächtige Störspannungen erzeugen.
Matthias S. schrieb:> Nimm da mal 100-470µH Drosseln, die den Motorstrom vertragen.> Übrigens, wenn die eine Hälfte des L293 einfach brachliegt, kannst du> die Endstufen auch parallel schalten.
Danke, wird umgesetzt!
Matthias S. schrieb:> LC Glied in der 24V Versorgung zum Motor kann auch nicht schaden
Kommt zur Liste für weitere Möglichkeiten.
OMG schrieb:> Warum machst du erst ein Layout fertig und fällst wieder rein?> Du kannst doch deinen Schaltplan und Layout hier diskutieren> lassen und ->dann<- erst ans "Machen" gehen.
Ich lerne durch Machen am besten, es macht mir Spaß mit KiCad zu
arbeiten also kein Problem. Außerdem diskutiere ich hier und erst durch
den ersten Prototyp im Einsatz ist das mit der Störung aufgefallen. Ich
habe mir sagen lassen, dass man EMF eh nur ansatzweise simulieren kann
und Praxistest braucht.
OMG schrieb:> Ich kenne die Stromaufnahmen deines Motors nicht
Sehr guter Einwand: Der Motor braucht 12V ca. 40mA (reiner Fahrvorgang),
unter Last ca. 80 - 120 mA (Schneidvorgang) und bei Blockage zieht er
300 mA.
OMG schrieb:> einfach einen dicken> Elko zum Abblocken.
Der Motor wird bidirektional betrieben, ein Elko geht da leider nicht,
ich hab ja Kerkos dran, die sollten nach Lektüre div. Beiträge zum Thema
DC Motorentstörung eigentlich reichen, bei PWM-Betrieb habe ich mir
sagen lassen, wären kleinere (ca 1 nF) sogar besser
(https://www.langer-emv.com/de/page/newsletter/51/03-entstoerung-eines-mit-pwm-betriebenen-gleichstrommotors/34#marker0)
OMG schrieb:> Reset> einen niederohmigen Pullup haben sodass dier ISP noch> funktioniert
Wird auch umgesetzt, danke!
OMG schrieb:> Und ein Lüfter der mit der gleichen Spannung versorgt wird> wie dein Controller wird dir mächtige Störspannungen erzeugen.
Ja, das dachte ich auch, allerdings zeigt der Schlitten/Motor dasselbe
Verhalten, wenn der Lüfter nicht angeschlossen ist. Der Lüfter ist auch
weiter weg, so ca. 10 cm, hinter Stahl und Alu.
spess53 schrieb:> Wieso kannst du an VCC2 keinen Elko anschließen?
Ach so ist das gemeint, klar, das geht, LC an VCC2 steht ja auf der
Liste für weitere Möglichkeiten.
Irgendwie sind mir da noch immer ein, zwei Dinge nicht klar.
* Wofür ist denn der R2 Pulldown an SCK? Das wird ein Spass beim
Programmieren.
* Ich würde den Tiny so umkonfigurieren, das der ISP Verbinder
gleichzeitig als Kontakt für die Endschalter dient, und zwar nicht, um
ein Pfostenfeld zu sparen, sondern, um während der Programmierung den
Motor in Ruhe zu lassen.
* Speise den Lüfter nicht von der VCC des Controllers - wurde aber oben
schon gesagt. Nimm da die 24V und einen billigen Stepdown - oder besser,
gleich einen Lüfter für 24V.
Matthias S. schrieb:> Wofür ist denn der R2 Pulldown an SCK? Das wird ein Spass beim> Programmieren.
Die Steuerung gibt das Signal für einen Schnitt durch HIGH über PB2. Ich
hatte das Phänomen, dass bei mancher Aktivität der übergeordneten
Maschine ein Schnitt ausgelöst wird. Soweit ich das verstanden habe, hat
weder die Steuerung noch der Tiny einen internen Pulldown wenn ich sage
LOW - nur Pullups wenn ich sage HIGH, richtig? Deshalb habe ich einen
Pulldown dazugemacht, damit auch sicher LOW anliegt, wenn die Steuerung
kein HIGH ausgibt.
Meinst du mit Spass am Programmieren das Programmieren in der IDE, wo
man auf den externen Pulldown achten muss, oder dass es Probleme mit dem
ICSP gibt? Letzteres habe ich nämlich noch nicht über das Prototyp-Board
versucht.
Matthias S. schrieb:> Ich würde den Tiny so umkonfigurieren, das der ISP Verbinder> gleichzeitig als Kontakt für die Endschalter dient, und zwar nicht, um> ein Pfostenfeld zu sparen, sondern, um während der Programmierung den> Motor in Ruhe zu lassen.
Das würde ich auch gerne, allerdings könnte ich nur SCK bzw. PB2 mit PB3
oder PB4 tauschen. PB1 und PB2 müssen zum Motortreiber/Motor, weil der
Tiny nur da PWM hat, zumindest ohne noch Register setzen zu müssen.
Selbst wenn, bekäme ich aber nur einen weiteren PWM-Pin dazu, einer der
beiden Motoranschlüsse müsste also immernoch bleiben.
Matthias S. schrieb:> Speise den Lüfter nicht von der VCC des Controllers - wurde aber oben> schon gesagt. Nimm da die 24V und einen billigen Stepdown - oder besser,> gleich einen Lüfter für 24V.
Ok, ein 24V Lüfter ist kein Problem, 5V hatte ich gerade da. Wird
geändert!