Hallo,
ich habe eine kleine Bastelei, die eine Zange automatisch betätigt.
Die Schaltung läuft mit einem ATTiny13A, einem kleinen DC Motor, einem
L293D Motortreiber, einem Taster und zwei Endschaltern. Wird der Taster
betätigt, fährt der Motor los, bis der erste Endschalter erreicht ist.
Dann fährt er in die andere Richtung zurück, bis der andere Endschalter
erreicht ist.
Wenn der Motor nicht stark belastet wird, funktioniert das auch. Aber
bei größerer Last steigt der Strom auf ca. 700mA und es kommt manchmal
vor, dass die Endschalter erkannt werden, obwohl sie nicht erreicht
werden. Ich habe mal 100nF zwischen die Motorpins gelötet und nochmal
jeweils 100nF von den Motorpins zum Motorgehäuse. Das hat das Problem
verbessert aber nicht gelöst. Hat jemand einen Tipp, wie ich das ganze
entstört bekomme?
Georg schrieb:> Hat jemand einen Tipp, wie ich das ganze entstört bekomme?
Wenn du es analog (Kabelführung, Filterung) nicht gelöst bekommst, dann
solltest du über eine brauchbare Software-Entprellung/Filterung
nachdenken.
Genaueres kann man nur mit genaueren Angaben (Schaltplan, Layout,
Aufbau, Programm) sagen.
Georg schrieb:> Die Schaltung läuft mit einem ATTiny13A, einem kleinen DC Motor, einem> L293D Motortreiber, einem Taster und zwei Endschaltern. Wird der Taster> betätigt, fährt der Motor los, bis der erste Endschalter erreicht ist.> Dann fährt er in die andere Richtung zurück, bis der andere Endschalter> erreicht ist.
Wie ist der Endschalter entprellt?
https://www.mikrocontroller.net/articles/Entprellung hilft natürlich
auch bei EMV-Störungen wenn es sauber programmiert ist.
Wie sind die Endschalter elektronisch angelegt? Pullup/Pulldown wenn ja
wie groß. In der Mechatronik mit Motoren und Frequenzumrichtern nimmt
man oft Stromschleifen (Analoge Stromschnittstelle) oder Optokoppler. So
kann man Kabelbrüche erkennen und stromgeregelte sind
störunempfindlicher als spannungsgeregelte.
Georg schrieb:> Ich habe mal 100nF zwischen die Motorpins gelötet und nochmal> jeweils 100nF von den Motorpins zum Motorgehäuse. Das hat das Problem> verbessert aber nicht gelöst. Hat jemand einen Tipp, wie ich das ganze> entstört bekomme?
Sind die 100nF einfach mal blind probiert? Wenn müsste man das mit einem
schnellen Oszi bewerten ob das überhaupt was bringt.
Neben der Entstörung des Motors könntest du mit einem einfachen RC-Glied
versuchen die Endschalter zu entstören. Was sind das für Endschalter
(mechanisch / induktiv)?
Georg schrieb:> Ich habe mal 100nF zwischen die Motorpins gelötet und nochmal> jeweils 100nF von den Motorpins zum Motorgehäuse.
Die kommen erst dann richtig zur Wirkung, wenn du den Motor noch über
Drosseln führst.
Georg schrieb:> Wenn der Motor nicht stark belastet wird, funktioniert das auch. Aber> bei größerer Last steigt der Strom auf ca. 700mA und es kommt manchmal> vor, dass die Endschalter erkannt werden, obwohl sie nicht erreicht> werden. Ich habe mal 100nF zwischen die Motorpins gelötet und nochmal> jeweils 100nF von den Motorpins zum Motorgehäuse. Das hat das Problem> verbessert aber nicht gelöst. Hat jemand einen Tipp, wie ich das ganze> entstört bekomme?
Hallo,
> Georg schrieb:> Wenn der Motor nicht stark belastet wird, funktioniert das auch. Aber> bei größerer Last steigt der Strom auf ca. 700mA und es kommt manchmal> vor, dass die Endschalter erkannt werden, obwohl sie nicht erreicht> werden.
Der Motorstrom mit seinen Zuleitungen ist natürlich eine Störquelle.
Es kann aber auch noch andere Störungen von außen geben.
Diese Störungen solltest du schon versuchen zu reduzieren, aber das ist
nur ein Teil der Lösung.
Die Endschalter haben wohl ein Stück zuleitung, die als Antenne due
Störspannungen einfangen.
> Ich habe mal 100nF zwischen die Motorpins gelötet und nochmal> jeweils 100nF von den Motorpins zum Motorgehäuse. Das hat das Problem> verbessert aber nicht gelöst. Hat jemand einen Tipp, wie ich das ganze> entstört bekomme?
Um das Verhältnis Signal-Störspannung (SNR) ist bei dir offenbar zu
klein.
Um es zu vergößern, kannst du folgende Sacghen machen:
1) Signalleistung erhöhen, z.B. indem du einen kleineren Pullup-R
einsetzt.
2) Transiente Störungen (Spikes) mit einem RC-Tiefpass ausfiltern
3) Leitungen verdrillen https://de.wikipedia.org/wiki/Twisted-Pair-Kabel
4) Schirmung verwenden
5) Software störsicherer machen (z.B. auch um Spikes zu unterdrücken)
Gruß Öletronika
Vielen Dank für die ganzen Tipps. Leider komme ich immer noch auf keinen
grünen Zweig.
Im Anhang ist der Schaltplan und der mechanische Aufbau zu sehen.
Was ich zwischenzeitlich versucht habe:
- Verdrillen der Leitungen
- Tiefpass aus 10k und 100nF auf die µC Eingänge geschaltet (Habe SMD
Bauteile auf die Unterseite der Platine gelötet, möglichst nah am µC. Im
Schaltplan noch nicht eingezeichnet)
- Verringerung der Pulldowns von 12k auf 2k2
Ich möchte die Endschalter ja möglichst schnell erkennen. Um das Problem
per Software zu lösen, müsste ich das Signal aber eine Weile beobachten,
bis es dauerhaft eindeutig ist. Könnte ich trotzdem nochmal versuchen,
aber irgendwie hätte ich das ganze gerne stabiler...
Wie kann das Ganze denn nur so empfindlich sein!? Selbst mit Filter auf
den Eingängen... Sieht vielleicht jemand einen offensichtlichen Fehler,
den ich gemacht habe?
Ich sehe auf den Bildern nicht daß du pro IC 100nf keramisch als
Abblockkondensator für die Versorgung hast.
Als zweites wie ist deine Masse? Hier wichtig:
Getrennte Stromversorgung und vor allem Masseführung für den
Motorstromkreis (incl L293) und den µC Teil direkt von der
Stromversorgung aus.
Ansonsten können kleine Spikes auf der Masse dafür sorgen daß dein µC
ein High an den Eingängen erkennt.
Oh man bin ich doof! Der µC hatte 100nF drin (der blaue Bobbel über dem
8-Pin IC) aber für den L293D habe ich den C vergessen. Jetzt habe ich
den ergänzt und alles funktioniert! VIELEN VIELEN DANK!
Georg schrieb:> aber für den L293D habe ich den C vergessen.> Jetzt habe ich den ergänzt und alles funktioniert!
Ich würde trotzdem vorschlagen, noch zusätzlich einen Pufferelko im
Bereich um 100µF mit rein zu bauen und die Software ein wenig
störumempfindlicher zu machen. So einen externen Schalter würde ich
niemals einfach so direkt abfragen, sondern immer entprellen/filtern.